# 正则
# 精准匹配
/()/
或者//
举例:hello world
正则: /(hello)/ ps:如果只有一个匹配值,可以去掉括号
匹配结果: hello
1
2
3
4
5
2
3
4
5
# 区间匹配
/[]/
,意思就是说匹配的字符在这个区间内
举例:hello
正则: /[a-z]/
匹配结果: h e l l o
1
2
3
4
5
2
3
4
5
# 多次匹配
/()+/
,用+
表示一次或多次
举例:hello world
正则: /[a-z]+/
匹配结果: hello world
1
2
3
4
5
2
3
4
5
# 非字符匹配
特殊字符,通过在字符前添加 \
来转换
举例:hello world , hello hello
正则: /[\,]/
匹配结果: ,
1
2
3
4
5
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 次以上,但尽可能少重复 |
# 正则表达式
- 匹配整数或小数(包含负数)
/-?\d+(\.\d+)?/g
1
- 匹配中文
/[\u4E00-\u9FFF]+/
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