JavaScript正则表达式基础
正则表达式在匹配字符串上十分实用,这里就简单写出在JavaScript中的正则表达式实用基础。
首先介绍一下JavaScript中测试正则表达式是否匹配的方法test,该方法传入要匹配的字符串,如果匹配成功返回true,失败返回false。下面都会用这个方法来测试正则表达式的匹配。
1 |
|
正则表达式的创建
可以实用字面量直接创建,也可以用构造函数创建。
使用字面量,将正则表达式内容写在两个/之间,而使用构造函数时,将正则表达式内容作为参数传入
1 |
|
接下来介绍正则表达式内的字符含义
元字符
\t 水平制表符(tab)
\v 垂直制表符
\n 换行符
\r 回车符
\0 空字符
\f 换页符
与类有关的字符
[] 将里面的内容归为一类,匹配到其中任一个即为匹配成功
1 |
|
^ 构建反向类,匹配到其中任一个为匹配失败
1 |
|
- 构建范围类,即匹配连续的字符(数字上的连续和字母上的连续),可以连写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16/[1-9]/.test('1');
// true
/[1-9]/.test('12');
// true
/[1-9]/.test('120');
// true
/[a-z]/.test('ab');
// true
/[a-z]/.test('abc');
// true
/[A-Z]/.test('AB');
// true
/[A-Z]/.test('ABC');
// true
/[1-9a-z]/.test('1aa1');
// true 连写预定义字符
下面的字符都是可以使用上面的字符来实现的,但是使用预定义字符更为方便
\d 数字字符
\D 非数字字符
\s 空白符
\S 非空白符
\w 单词字符(字母和数字下划线)
\W 非单词字符
边界匹配字符
^ 以。。。开始
1 |
|
$ 以。。。结束
1 |
|
\b 单词边界
1 |
|
\B 非单词边界
1 |
|
量词
通过https://regexper.com/#%5Cn%0A这个网站来可视化看出次数
? 最多出现1次
\d?
上图的含义为,可以不经digit(数字)走过这条路,即数字出现0次的匹配,也可以经过一次
+ 最少出现1次
\d+
上图的含义为经过一次或无限次循环经过,即匹配一个或者匹配无数个重复的
* 出现任意次
\d*
{n} 出现n次
\d{2}
上图含义为经过一次后还能再经过一次,即为两次
{n,m} 出现n到m次
\d{2,5}
{n,} 至少出现n次
\d{2,}
贪婪模式
正则表达式在可以匹配多个也可以匹配少个的情况下,会默认尽可能地匹配多个
1 |
|
上面代码中,既可以匹配三次,也可以匹配两次,最后匹配了两次(尽可能地匹配多个就导致了匹配次数的下降)
非贪婪模式
要尽可能匹配少个的话,只需要在两次后面加上?即可
1 |
|
分组
() 可用于实现分组
1 |
|
| 用于实现或,即选取分组内的任一个
1 |
|
$ 用于反向引用,引用分组的内容
1 |
|
修饰符
g 全文搜索,添加后会一直匹配
1 |
|
i 忽略大小写,默认大小写敏感,添加忽略大小写
1 |
|
m 多行搜索
当有多行时,添加能匹配多行