写点什么

正则表达式

作者:Jason199
  • 2022 年 7 月 07 日
  • 本文字数:2514 字

    阅读完需:约 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('\\'))
复制代码


发布于: 刚刚阅读数: 4
用户头像

Jason199

关注

还未添加个人签名 2022.04.29 加入

一条努力上岸的咸鱼

评论

发布
暂无评论
正则表达式_正则表达式_Jason199_InfoQ写作社区