

[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 正则表达式语法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。