RegExp - 正则表达式

89 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情

 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('!@#$%$#@#$%$#$%$#$%$#'))    
 console.log(reg.test('!@#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('\'))