js正则表达式


一.正则表达式(规则表达式)
        + 由我们自己书写规则
        + **专门用来检测一个字符串是否符合我书写的标准**
        + 一般都是用在 表单验证 / 从字符串中获取某些内容

 

二. 创建正则表达式的方式
         1. 字面量创建
          var reg = /abcd/
        2. 内置构造函数创建
          var reg = new RegExp('abcd')
      正则表达式是一个复杂数据类型
 
      俩个创建方法的区别
      1. 字面量直接写
        + 不能进行字符串拼接
      2. 内置构造函数的方式
        + 第一个参数是写在正则内部的符号
          + 当你需要写一些正则的元字符的时候
          + 需要写成 \\d
        + 第二个参数是标识符
          + 可以把多个标识符写在一个字符串里面
        + 可以进行字符串拼接
    // var reg1 = /abcd/ig
    // console.log(reg1)

    // 表示我想正则中 填充的内容是一个换行
    // var reg2 = new RegExp('\n', 'ig')
    // console.log(reg2)

    // 表示你向正则中填充了一个 \n  => var reg = /\n/
    // var reg2 = new RegExp('\\d{2}', 'ig')
    // console.log(reg2)
 
三.正则表达式就是用来检测字符串是不是满足要求的
       1. test() 用来检测字符串
        语法: 正则表达式.test(字符串)
        返回值: 如果字符串满足我写的规则,那么返回 true,否则返回 false
    // 需要包含字符 abcd
    var reg = /abcd/
    var str = 'sfdasfsgefsa bcdasfjifgerjgnen'
    // 用刚才的正则取检测 str 这个字符串
    var res = reg.test(str)
    console.log(res)
 
四.元字符
      1. `.`(点)
        + 非换行的任意字符
      2. `\`(斜线)
        + 转译
        + 把有意义的变成没有意义的
        + 把没有意义的变成有意义的
      3. \s                                 (space 空格)
        + 空格
      4. \S
        + 非空格
      5. \d                                 (digit  (从0~9的任意一个)数字)
        + 数字
      6. \D
        + 非数字
      7. \w                                   (word  单词)                     
        + 数字字母下划线
      8. \W
        + 非数字字母下划线
// 表示字符串里面包含着非换行的其他字符都可以
    // var reg = /./
    // var str = 'a\n'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串里面需要包含着一个 . 字符
    // var reg = /\./
    // var str = 'ab.cd'
    // var res = reg.test(str)
    // console.log(res)


    // 表示字符串中需要包含一个 空格
    // var reg = /\s/
    // var str = 'abcd s'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要包含一个非空格
    // var reg = /\S/
    // var str = '   a   '
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要包含一个数字
    // var reg = /\d/
    // var str = 'abcd  sferg'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要包含一个非数字
    // var reg = /\D/
    // var str = '123asdj'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要包含一个 字母也行数字也行下划线也行
    // var reg = /\w/
    // var str = '@#¥%……&'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要出现一个 非数字字母下划线 的内容
    var reg = /\W/
    var str = 'fegsasd……1231231___'
    var res = reg.test(str)
    console.log(res)
五.边界符
       + 用来限制正则的边界,也是限制字符串的边界

      1. ^
        + 开始
      2. $
        + 表示结束
      + 在使用正则的表示表示以什么开头以什么结尾
// 表示字符串需要以 a 开头,a 要和 bcd 连着
    // var reg = /^abcd/
    // var str = 'abcdkjhklhksadadasad'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串需要以 d 结尾, abc 需要连着 d
    // var reg = /abcd$/
    // var str = 'kjhhlkhhkabcdaskjdhkabcd'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串从开头到结尾只能由 abcd 四个字母组成,并且顺序不能变
    // var reg = /^abcd$/
    // var str = 'abcd'
    // var res = reg.test(str)
    // console.log(res)

    // var reg = /^\d\d\d\d\d$/
    // var str = '111456'
    // var res = reg.test(str)
    // console.log(res)
六.限定符
         + 用来描述每一个正则 元字符 出现的次数

      1. +(加号)
        表示 1 到 正无穷次
      2. *(星号)
        表示 0 到 正无穷次
      3. ?(问号)
        表示 0 或者 1 次
      4. {n}
        表示 n 次
      5. {n,}
        表示至少 n 次 {1,}
        {1,} 等价于 +
        {0,} 等价于 *
      6. {n,m}
        表示 至少 n 次,至多 m 次
        {0,1} 等价于 ?
  // 表示字符串只能由 一位以上的数字组成
    // var reg = /^\d+$/
    // var str = '123454'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要出现数字 0 到 正无穷次
    // var reg = /\d*/
    // var str = 'abcdefg123456'
    // var res = reg.test(str)
    // console.log(res)

    // 字符串只能由 0 到多个数字组成
    // var reg = /^\d*$/
    // var str = ''
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要出现数字 0 次 或者 1 次
    // var reg = /\d?/
    // var str = 'adasdsd1234'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串只能由 0 个 或 1 个数字组成
    // var reg = /^\d?$/
    // var str = '123'
    // var res = reg.test(str)
    // console.log(res)


    // 表示字符串里面需要包含一个 三个数字连着 的字符片段
    // var reg = /\d{3}/
    // var str = 'abcdefg123456'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串只能由 三位数字 组成
    // var reg = /^\d{3}$/
    // var str = '12345'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串从开头到结尾只能由三位以上的数字组成
    // var reg = /^\d{3,}$/
    // var str = '12345676889'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串只能由 6 ~ 16 位数字组成
    var reg = /^\d{6,16}$/
    var str = '1234567890123456'
    var res = reg.test(str)
    console.log(res)

    // 在谷歌应用商店搜索 FEHelper
七.特殊符号
       1. () 小括号
        + 表示一个集合
        + 在捕获的时候单独捕获(讲方法的时候说)
      2. []
        + 表示一个任意选择的集合
        + 出现在中括号内的内容出现任意一个就行
      3. [^]
        + 表示一个非任意选择集合
        + 出现在这个符号中的任意一个字符都不能出现
      4. |
        + 或
          + || 逻辑或
          + |  占位或
        + 一般和小括号一块使用
      5. -(中划线,英文状态的中划线)
        + 到(至)
        + 一般和中括号一起使用
        + 必须是 ASCII 编码挨着的
        + [0-9] 等价于 \d
        + [^0-9] 等价于 \D
        + [0-9a-zA-Z_] 等价于 \w
        + [^0-9a-zA-Z_] 等价于 \W
 // 表示字符串从开头到结尾需要 abcdabcd
    // var reg = /^(abcd){2}$/
    // var str = 'abcdabcd'
    // var res = reg.test(str)
    // console.log(res)


    // 表示字符串从开头到结尾,只能由 a 或者 b 或者 c 或者 d 组成,并且只能出现两次
    // var reg = /^[abcd]{2}$/
    // var str = 'ad'
    // var res = reg.test(str)
    // console.log(res)

    // 表示这一位字符不能是 a 不能是 b 不能是 c 不能是 d,其他的都行
    // var reg = /^[^abcd]$/
    // var str = 'e'
    // var res = reg.test(str)
    // console.log(res)


    // 表示这个位置写的内容可以是 163 可以是 162 可以是 sina 可以是 qq
    // var reg = /^(163|162|sina|qq)$/
    // var str = '163'
    // var res = reg.test(str)
    // console.log(res)

    // var reg = /^[0-9]$/
    // var str = 'A'
    // var res = reg.test(str)
    // console.log(res)
八.正则的方法
         1. 一个叫做 匹配
          + 就是检测看看字符串是否符合规则
          + test()
        2. 一个叫做 捕获
          + 就是把字符串中符合要求的那一段字符给我单独拿出来
          + exec()

        exec
          语法: 正则表达式.exec(要捕获的字符串)
          返回值: 是一个数组
            有一些内容
            数组第 0 项 是按照正则要求捕获出来的内容
            index: 表示我找到的这个字符片段是从哪一个索引开始的
            input: 表示原始字符串
          因为正则的懒惰性
            捕获完毕以后,下次捕获的时候还是从索引 0 开始查找
          当正则有了标识符 g 的时候
            会在第二次捕获的时候,从第一次捕获的结尾开始查找
            如果没有找到会返回 null
            当他返回 null 的时候,那么下一次的捕获又会从索引 0 开始捕获

        由一个正则的特性
          叫做懒惰性

        正则的标识符
          + 标识符是写在正则的后面的

        1. g 表示全局的意思
 // var reg = /\d{3}/
    // var str = 'abcdefg123abcdefg234abcdefg456asdasd'
    // var res = reg.exec(str)
    // var res2 = reg.exec(str)
    // console.log(res)
    // console.log(res2)


    // var reg = /\d{3}/g
    // var str = 'abcdefg123abcdefg234abcdefg456asdasd'
    // var res = reg.exec(str)
    // var res2 = reg.exec(str)
    // var res3 = reg.exec(str)
    // var res4 = reg.exec(str)
    // var res5 = reg.exec(str)
    // console.log(res)
    // console.log(res2)
    // console.log(res3)
    // console.log(res4)
    // console.log(res5)
 
 
 标识符
        - 对正则的特殊修饰

      1. g
        + 全部捕获
        + 抵消正则的懒惰性
      2. i
        + 忽略大小写
        + 正则在检测字符串的时候不管字母的大小写
    // var reg = /[a-z]/i
    // var str = '1234A1234'
    // var res = reg.test(str)
    // console.log(res)
 
 
 字符串和正则合作的方法
      1. search()
        语法: 字符串.search(正则)
        返回值:
          如果找到,返回的是字符片段开始的索引
          如果没有,就是返回 -1
      2. match()
        语法: 字符串.match(正则)
        返回值:
          当正则没有全局标识符 g 的时候,和 exec 方法一样
          当正则有全局标识符 g 的时候,返回值是捕获到的每一个内容(以一个数组的形式返回)
      3. replace()
        语法: 字符串.replace(正则)
        返回值: 替换好的字符串
          没有全局标识符 g 的时候是只替换一个
           有全局标识符 g 的时候,会全部替换


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM