[abc]可以匹配方括号中的a、b、c或其任意组合的字符。
反向类
既然[]可以构建一个类,那么自然就会联想到与之对应的不包含括号中内容的类,这个类叫做反向类,例如[^abc]就可以匹配不是a或b或c的字符。
范围类
有时候一个一个字符匹配太麻烦而且匹配的类型也相同,此时我们可以使用"-"连接线来表示某个闭区间之间的内容,例如匹配所有小写字母可以使用[a-z],如下:
匹配所有的0到9简直的任意数字可以使用[0-9]表示:
预定义类
对于如上我们创建的几个类,正则表达式为我们提供了几个常用的预定义类来匹配常见的字符,如下:
字符 | 等价类 | 含义 |
. | [^ ] | 匹配除了回车符和换行符之外的所有字符 |
d | [0-9] | 数字字符 |
D | [^0-9] | 非数字字符 |
s | [ x0Bf ] | 空白字符 |
S | [^ x0Bf ] | 非空白字符 |
w | [a-zA-Z_0-9] | 单词字符(字母、数字和下划线) |
W | [^a-zA-Z_0-9] | 非单词字符 |
字符 | 含义 |
? | 出现零次或一次(最多一次) |
+ | 出现一次或多次(至少一次) |
* | 出现零次或多次(任意次) |
{n} | 出现n次 |
{n,m} | 出现n到m次 |
{n,} | 至少出现n次 |
var num = "123456789"; num.match(/d{2,4}/g); //[1234]、[5678]、[9]与贪婪模式对于的是非贪婪模式,只需要在量词之后加"?"即可,例如{n,m}?,就是按照最少的字符匹配,如下:
var num = "123456789"; num.match(/d{2,4}?/g); //[12]、[34]、[56]、[78]、[9]分组
如果想要匹配apple或orange出现4次,可以插入管道符"|",例如:
(apple|orange){4}
如果使用分组的正则表达式中出现多个小括号即多个分组,那么匹配结果就会把匹配项也分组并编号,例如:
(apple)d+(orange)
如果我们不希望捕获某些分组,只需要在分组的小括号前面紧跟一个问号和冒号即可,例如:
(?:apple)d+(orange)
边界
正则表达式也为我们提供了几个常用的边界匹配字符,例如:
字符 | 含义 |
^ | 以xx开头 |
$ | 以xx结尾 |
单词边界,指[a-zA-Z_0-9]之外的字符 | |
B | 非单词边界 |
表达式 | 含义 |
exp1(?=exp2) | 匹配后面是exp2的exp1 |
exp1(?!exp2) | 匹配后面不是exp2的exp1 |
看一个例子:
apple(?=orange)
(/apple(?=orange)/).test("appleorange123"); //true (/apple(?=orange)/).test("applepear345"); //false再看另一个例子:
(/apple(?!orange)/).test("appleorange123"); //false (/apple(?!orange)/).test("applepear345"); //true以上这篇老生常谈JavaScript 正则表达式语法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。