正则表达式

作者 Zwe1 日期 2018-03-30
正则表达式

前言

正则是用于匹配字符串中字符组合的模式,常用在格式校验中。对正则的应用并不深入,那就写一片文章来边学边用吧。

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方法。