# 正则

# 精准匹配

/()/或者//

举例:hello world

正则: /(hello)/ ps:如果只有一个匹配值,可以去掉括号

匹配结果: hello
1
2
3
4
5

# 区间匹配

/[]/,意思就是说匹配的字符在这个区间内

举例:hello

正则: /[a-z]/ 

匹配结果: h e l l o
1
2
3
4
5

# 多次匹配

/()+/,用+表示一次或多次

举例:hello world

正则: /[a-z]+/ 

匹配结果: hello world
1
2
3
4
5

# 非字符匹配

特殊字符,通过在字符前添加 \ 来转换

举例:hello world , hello hello

正则: /[\,]/ 

匹配结果: ,
1
2
3
4
5

# 位置匹配

修饰符 描述
^ 匹配字符串开始的位置
$ 匹配字符串结尾的位置
\b 匹配一个单词边界,指单词和空格间的位置
\B \b相反

# 简写模式

修饰符 描述
\d 即[0-9],表示数字
\D 即[^0-9],表示处数字外的任意字符
\w 即[0-9a-ZA-Z_],表示数字字母下划线
\W 即[^0-9a-ZA-Z_],表示非单词字符
\s 即[ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页符。记忆方式:s是space character的首字母。
\S 即[^ \t\v\n\r\f]。 非空白符。
. 就是[^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符除外。记忆方式:想想省略号...中的每个点,都可以理解成占位符,表示任何类似的东西。

# 选择符

修饰符 描述
| 表示|左右俩侧有一个匹配到就可以

# 修饰匹配

修饰符 描述
i ingore case,忽略大小写
g global,全局匹配
m multi-line,多行匹配
s 默认情况下的圆点 . 是 匹配除换行符 \n 之外的任何字符,加上 s 之后, . 中包含换行符 \n

# 重复匹配

修饰符 描述
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
* 匹配前一个表达式0次货多次,等价于{0,}
+ 匹配前一个表达式1次货多次,等价于{1,}
? 匹配前面一个表达式0次或者1次,等价于{0,1}
?=n 匹配任何其后紧接着指定字符串n的字符串

# 断言匹配

修饰符 描述
x(?=y) 匹配'x'仅仅当'x'后面跟着'y'.这种叫做先行断言
(?<=y)x 匹配'x'仅当'x'前面是'y'.这种叫做后行断言
x(?!y) 仅仅当'x'后面不跟着'y'时匹配'x',这被称为正向否定查找
(?<!y)x 仅仅当'x'前面不是'y'时匹配'x',这被称为反向否定查找

# 贪婪模式和非贪婪模式

修饰符 描述
*? 重复任意次,但尽可能少重复
+? 重复 1 次或更多次,但尽可能少重复
?? 重复 0 次或 1 次,但尽可能少重复
{n,m}? 重复 n 到 m 次,但尽可能少重复
{n,}? 重复 n 次以上,但尽可能少重复

# 正则表达式

  1. 匹配整数或小数(包含负数)
/-?\d+(\.\d+)?/g
1
  1. 匹配中文
/[\u4E00-\u9FFF]+/
1
  1. 手机号(严谨版,根据工信部2019年最新公布的手机号段)
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/
1