前言
正则是用于匹配字符串中字符组合的模式,常用在格式校验中。对正则的应用并不深入,那就写一片文章来边学边用吧。
Javascript语言内置RegExp对象,用于创建一个正则表达式,并提供了几个十分便利的Api。
创建一个正则表达式
创建正则字面量:
const regex1 = /ab+c/;
const regex2 = /^[a-zA-Z]+[0-9]*\W?_$/gi;
此方法用于创建不变的正则匹配模式比较方便。
调用RegExp对象的构造函数:
let regex1 = new RegExp('ab+c');
let regex2 = new RegExp(/^[a-zA-Z]+[0-9]*\W?_$/,"gi");
此方法可接收外源匹配模式,当你不知道具体的模式,如需要接收用户输入作为匹配模式时,可以讲输入值传入,生成正则表达式。
常用特殊字符
字符 | 含义 |
---|---|
\ | 转义符 |
^ | 匹配输入的开始 |
$ | 匹配输入的结束 |
* | 匹配前面一个表达式0次或多次 |
+ | 匹配前面一个表达式1次或多次,等价于{1,},贪婪模式 |
? | 匹配前面一个表达式0次或1次,等价于有或无。 |
. | 匹配除换行符之外的任何单个字符 |
x|y | 匹配‘x’或者‘y’ |
{n} | 匹配前面一个字符出现n次 |
{n, m} | 匹配前面一个字符出现n-m次 |
[xyz] | 匹配字符集 |
[^xyz] | 匹配反向字符集 |
\b | 匹配一个词的边界 |
\d | 匹配一个数字 |
\D | 匹配一个非数字字符 |
\s | 匹配一个空白字符,包括空格,制表符,换页符和换行符 |
\S | 匹配一个非空白符 |
\w | 等价于[A-Za-z0-9_] |
正则表达式方法
方法 | 描述 |
---|---|
exec | 一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回null)。 |
test | 一个在字符串中测试是否匹配的RegExp方法,它返回true或false。 |
match | 一个在字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null。 |
search | 一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。 |
replace | 一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。 |
split | 一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法。 |