正则表达式语法大全

1、描述字符

根据正则表达式语法规则,大部分字符仅能够描述自身,这些字符被称为普通字符,另一类称为元字符,它和普通字符不同,大部分需要加反斜杠进行标识:
引用内容 引用内容
.:查找单个字符,除了换行和行结束符;
\w:查找单词字符;
\W:查找非单词字符;
\d:查找数字;
\D:查找非数字字符;
\s:查找空白字符;
\S:查找非空白字符;
\b:匹配单词边界;
\B:匹配非单词边界;
\0:查找 NUL字符;
\n:查找换行符;
\f:查找换页符;
\r:查找回车符;
\t:查找制表符;
\v:查找垂直制表符;
\xxx:查找以八进制数 xxxx 规定的字符;
\xdd:查找以十六进制数 dd 规定的字符;
\uxxxx:查找以十六进制 xxxx规定的 Unicode 字符;

Tips:RegExp()构造函数参数为字符串,字符串加反斜杠表示的是字符本身,例如"\w"表示w本身,所以在RegExp()构造函数中使用元字符时,应使用双斜杠:new RegExp("\\w")。

2、字符范围

在方括号中可以包含多个字符,表示匹配其中任意一个字符。连字符(-)表示一个范围内的所有字符,脱字符(^)前缀表示范围之外的其他字符:
引用内容 引用内容
[abc]:查找方括号内任意一个字符;
[^abc]:查找不在方括号内的字符;
[0-9]:查找从 0 至 9 范围内的数字,即查找数字;
[a-z]:查找从小写 a 到小写 z 范围内的字符,即查找小写字母;
[A-Z]:查找从大写 A 到大写 Z 范围内的字符,即查找大写字母;

3、重复匹配

引用内容 引用内容
n+:匹配任何包含至少一个 n 的字符串;
n*:匹配任何包含零个或多个 n 的字符串;
n?:匹配任何包含零个或一个 n 的字符串;
n{x}:匹配包含 x 个 n 的序列的字符串;
n{x,y}:匹配包含最少 x 个、最多 y 个 n 的序列的字符串;
n{x,}:匹配包含至少 x 个 n 的序列的字符串;

4、子表达式

使用小括号可以对字符模式进行任意分组,在小括号内的字符串表示子表达式,也称为子模式,子表达式具有独立的匹配功能,保存独立的匹配结果:
引用内容 引用内容
var s = "a=1, b=2, c=3";
var r = /\w+=\d+/g;
while (a = r.exec(s)) {
    console.log(a);
}
//["a=1"]
//["b=2"]
//["c=3"]

引用内容 引用内容
var s = "a=1, b=2, c=3";
var r = /(\w+)=(\d+)/g;
while (a = r.exec(s)) {
    console.log(a);
}
//["a=1", "a", "1"]
//["b=2", "b", "2"]
//["c=3", "c", "3"]

5、边界量词

引用内容 引用内容
^:在多行检测中,会匹配一行的开头;
$:在多行检测中,会匹配一行的结尾;

6、选择匹配

选择匹配类似于JS的逻辑或运算,用竖线(|)表示在两个子模式的匹配结果中任选一个:
引用内容 引用内容
(/[a-z]|[0-9]/).exec("123abc"); //["1"]

7、条件匹配

条件匹配表示必须满足指定的条件,但不会返回这些字符,语法:
引用内容 引用内容
(?=匹配条件):条件必须匹配;
(?!匹配条件):条件禁止匹配;

例如:
引用内容 引用内容
(/\w*(?==)/).exec("one:1, two=2"); //["two"]
(/\w*(?!=)/).exec("one:1, two=2"); //["one"]


评论: 0 | 引用: 0 | 查看次数: 5166
发表评论
登录后再发表评论!