当前位置:网站首页>正则表达式

正则表达式

2022-07-07 23:27:00 InfoQ


 RegExp - 正则表达式

   也可称为 "规则表达式"
        是一个复杂数据类型
        作用:
          1. 专门用来验证字符串是否符合规则
          2. 从字符串里面获取一部分符合规则的内容
        使用方法:
          使用一些特定的符号, 来组合成一个表达式
        使用这个表达式去验证字符串, 或者从字符串里面获取一些内容
创建一个正则表达式
        1. 字面量形式创建
          
// 1. 字面量创建
 const reg = /abcd/;
 console.log(reg);
 console.log(typeof reg);
        2. 内置构造函数创建
// 2. 内置构造函数创建
 const reg2 = new RegExp('abcd');
 console.log(reg2);
 console.log(typeof reg2);
        意义: 字符串里面包含一段 abcd 字母就可以
          检测: aaabbbcccddd 不合格
          检测: aaabcddddd   合格

正则表达式的两个方法

       
 
1. 匹配:
 
 验证字符串是不是符合正则规则
          使用方法: 正则.test(你要检测的字符串)
          返回值: 一个布尔值, true 或者 false
 
 
2. 捕获: 
 从字符串里面获取符合正则规则的那一部分片段
          使用方法: 正则.exec(你要捕获的字符串)
          返回值:
            1. 字符串里面没有符合规则的片
            2. 字符串里面有符合规则的片段
             
 2-1. 基础捕获
                返回值是一个数组
                [0] 是捕获出来的片段
                不管有多少个片段, 都只是捕获第一个片段
                不管捕获多少次, 都是第一个片段
              
2-2. 当正则表达式有 () 的时候
                返回值是一个数组
                从 索引[1] 开始依次是每一个小括号的单独捕获
             
 2-3. 当正则有全局标识符 g 的时候
                第二次捕获会从第一次捕获的结束为开始继续向后查找
                直到找不到了位置, 返回 null
                再后面一次捕获, 依旧会从 [0] 位置开始查找
 const reg = /abcd/;
// 1. test()
 console.log(reg.test('aaabbbcccddd'));
 console.log(reg.test('aaabcddddd'));
// 2. exec()
 const res = reg.exec('aaabbbcccddd')
 console.log(res);
 const res2 = reg.exec('aaabcdddddabcdabcd');
 console.log(res2);

 正则表达式的元字符 - 基础元字符

        元字符: 组成正则的基本符号
          以符号的形式来代替文本内容
          把所有的文本内容归结成一些符号来代替
 
 1. \s (小写)  表示一个空格
 1. \s
 // 表示字符串里面需要有一个 空格 字符
 const reg = /\s/ ;// 等价于 / / 
 console.log(reg.test(' abcdefg'));
 console.log(reg.test('abc d efg'));
      2. \S(大写)   表示一个非空格
 
// \S
 // 表示字符串里面需要有一个 非空格 字符
 const reg = /\S/
 console.log(reg.test(' a'))
 console.log(reg.test(' a a a '))

      3. \t   表示一个制表符(tab)
// 3. \t
// 表示你的字符串里面需要有一个 制表符 字符
 const reg = /\t/
 console.log(reg.test(' ')) // 两个空格
 console.log(reg.test(' ')) // 一个制表符
      一个制表符就是制表符, 不是多个空格。
      4. \d   表示一个数字
// \d
 // 表示你的字符串里面需要有一个 数字 字符
 const reg = /\d/
 console.log(reg.test('abcdef'))
 console.log(reg.test('ab1c1d111ef'))
      5. \D   表示一个非数字
// \D
 // 表示你的字符串里面需要有一个 非数字 字符
 const reg = /\D/
 console.log(reg.test('1234567890'))
 console.log(reg.test('12a34a5a67a890'))
      6. \w   表示一个 数字字母下划线
 
 // \w
 // 表示你的字符串里面需要有一个 数字或者字母或者下划线 字符
 const reg = /\w/
 console.log(reg.test('[email protected]#$%$#@#$%$#$%$#$%$#'))
 console.log(reg.test('[email protected]#123123$%$#@#$%$#$%asdasd$#$%$#'))
        表示 数字 字母 下划线 三选一 得有一个
      7. \W   表示一个 非数字字母下划线
// \W
 // 表示你的字符串里面需要有一个 数字字母下划线 以外的字符
 const reg = /\W/
 console.log(reg.test('asdasd123123123____'))
 console.log(reg.test('asdasd123123123____%'))
 console.log(reg.test('asdasd12312312##3____'))
        表示 数字 字母 下划线 以外的任意一个都行
      8. 点(.) 表示非换行的任意字符
// 点(.)
 // 表示你的字符串里面需要有一个 非换行 内容
 const reg = /./
 console.log(reg.test('\n'))
 console.log(reg.test('a\nb'))
 console.log(reg.test(' \n'))
      9. 斜线(\) 表示转义符
        把没有意义的内容转换成有意义的内容
        把有意义的内容转换成没有意义的内容
 // 斜线(\)
 // 表示你的字符串里面需要有一个字母 s
 const reg = /s/
 console.log(reg.test('abcd'))
 console.log(reg.test('abcds'))

 // 表示你的字符串里面需要有一个 空格字符
 const reg2 = /\s/
 console.log(reg2.test('abcdssss'))
 console.log(reg2.test('abcdssss '))

 // 表示你的字符串里面需要有一个 非换行 的任意字符
 const reg3 = /./
 console.log(reg3.test('asday'))

 // 表示你的字符串里面需要有一个 点 文本
 const reg4 = /\./
 console.log(reg4.test('asdasd'))
 console.log(reg4.test('asdasd.'))

 // 表示你的字符串里面需要有一个 \ 文本
 const reg5 = /\\/
 console.log(reg5.test('\\'))

原网站

版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://xie.infoq.cn/article/3873adb00d597af56a9131921