Skip to content
On this page

正则

是一个用来处理字符串的规则

  • 正则只能用来处理字符串

  • 处理一般包含两方面:

    • 验证当前字符串是否符合某个规则 “正则匹配”
    • 把一个字符串中符合规则的字符获取到 “正则捕获”

学习正则其实就是在学习如何编写规则,每一个正则都是由修饰“元字符”、“符”两部分组成

创建正则的两种方式

javascript
let reg1 = /^\d+$/g; //=> 字面量方式
let reg2 = new RegExp("^\\d+$", "g"); //=> 构造函数方式
1
2

正则两个斜杠之间包起来的都是“元字符”,斜杠后面出现的都是“修饰符”

javascript
let reg = /^\d+$/g;
1

常用的修饰符

i: ignoreCase 忽略大写小匹配 m: multiline 多行匹配 g: global 全局匹配

常用的元字符

特殊元字符

\d  0~9之间的一个数字
\D  非0~9之间的任意字符
\w  “数字、字母、下划线”中的任意一个 =>/[0-9a-zA-Z_]/等价于\w
\s  匹配任意一个空白字符(包括\t制表符[TAB键四个空格])
\b  匹配边界符  'zhu'(z左边和u右边就是边界)  'zhu-feng'(z左边、u右边、f左边、g右边是边界)
\n  匹配一个换行符
\  转义字符(把一个普通字符转义为特殊的字符,例如:\d,把有特殊含义的转换为普通意思,例如:\. 此处的点就不是任意字符,而是一个小数点)
. 不仅仅是小数点,代表除了\n以外的任意字符
^  以某个元字符开头
$  以某个元字符结尾
x|y  x或者y中的任意一个(a|z...)
[xyz] x或者y或者z中的任意一个
[^xyz] 除了x\y\z以外的任意字符
[a-z] 获取a-z中的任意一个字符([0-9] 等价于\d ...)
[^a-z] 除了a-z的任意字符
()  正则分组
(?:) 当前分组只匹配不捕获
(?=) 正向预查
(?!) 负向预查
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

量词元字符:让其左边的元字符出现多少次

* 出现零到多次
? 出现零到一次
+ 出现一到多次
{n} 出现N次
{n,} 出现N到多次
{n,m} 出现N到M次
1
2
3
4
5
6

普通元字符

只要在正则中出现的元字符(在基于字面方式创建),除了特殊和有量词意义的以外,其余的都是普通元字符

沪ICP备20006251号-1