关于正则

86 阅读2分钟

什么是正则

书写一段规则,用于匹配一段字符是否符合规则

创建的时候 1.字面量的形式; const reg = /abc/ const reg = /\w/ig

2.内置构造函数; const reg1 = new RegExp('abc') const reg1 = new RegExp('\\w', 'ig')

正则常用的方法

1.匹配

  • test
  • 匹配字符串是否符合规则
  • 语法:正则.test(字符串)
const reg = /abc
const str = 'qwertyui'
console.log(reg.test(str))

2.捕获

  • exec
  • 捕获字符串中符合规则的内容
  • 语法:正则.exec(字符串) ==补充:== 1.没有捕获到:直接返回一个null; 2.1.捕获到,没有g则永远都会是下标0开始第一个符合条件的,有g则会每次往后捕获,直到捕获完成, 返回null; 2.2 有小括号时,下标0还是正常捕获到的内容,从下标1开始则是每个小括号捕获到的内容。

正则的元字符

普通元字符

  1. \d 表示一个数字[0-9]
  2. \D 表示一个非数字(除了[0-9])
  3. \w 表示数字字母(a-zA-Z)下划线(_)的其中一个
  4. \W 表示除了数字字母下划线的一个字符
  5. \s 表示一位空白字符
  6. \S 表示一位非空白字符
  7. . 表示一位非换行的任意字符
  8. \ 表示转义符

边界元字符

  1. ^ 表示开头
  2. $ 表示结尾

限定元字符

  • 表示前边一个符号出现多少次
  1. * 表示0~正无穷次

  2. + 表示1~正无穷次

  3. ? 表示0~1次

  4. {n} 表示只能出现n次

  5. {n,} 表示至少出现n次

  6. {n,m} 表示至少出现n次,最多出现m次

特殊元字符

  1. ()
  • 含义1:单独当成一个整体
  • 含义2:可以单独捕获
  1. |
  • 分界线是小括号或整个字符串
  1. []
  • 包含(有一个就行,[]实际代表一个字符)
  1. [^]
  • 不包含
  1. -

重复元字符

符号:\1 \2...

  • 代表第几个小括号的值

正则的标识符

  1. i 忽略大小写
  2. g 全局检测或捕获

正则的两大特性

1. 懒惰 正常捕获字符串时,每次都从下标0开始 解决方式:给正则添加一个修饰符g

2.贪婪 每次在捕获时,会尽可能捕获多一些东西 解决方式:添加贪婪限定符

  • 贪婪限定符: *、+、{n,}、{n,m}

  • 非贪婪限定符: *?、+?、??、{n,}?、{n,m}?