1、 正则表达式元字符:
( { { / ^ $ | } ? * + .
2、 特殊字符:
/t 制表符
/n 换行符
/r 回车符
/f 换页符
/a alert字符
/e escape字符
/cX 与X相对应的控制字符
/b 回退字符
/v 垂直制表符
/0 空字符
注意:如果通过RegExp构造函数来使用它们,则都必须进行双重转义。
3、 字符类:
3.1简单类
例:假设想匹配”bat”,”cat”,”fat”。使用简单类就可以方便的解决问题:
var sToMatch=”a bat,a cat,a fat bat,a fat cat”;
var reBatCatRat=/[bcf]at/gi;
var arrMatches= sToMatch.match(reBatCatRat);
其中arrMatches数组现在存放了这些值:”bat”,”cat”,”fat”,”bat”,”fat”,”cat”。
3.2负向类(negation class)
例,同上,如果只想获取包含at但不能以b或c开头单词。
var sToMatch=”a bat,a cat,a fat bat,a fat cat”;
var reBatCatRat=/[^bc]at/gi;
var arrMatches= sToMatch.match(reBatCatRat);
其中arrMatches数组现在存放了这些值:”fat”,”fat”。
3.3范围类(range class)
例,要测试的字符恰好按照字符编码的顺序排列的时候,范围类就很管用。
var sToMatch=”n1,n2,n3,n4,n5,n6,n7,n8,n 9” ;
var reBatCatRat=/n[1-4]/gi;
var arrMatches= sToMatch.match(reBatCatRat);
其中arrMatches数组现在存放了这些值:”n 1” ,”n 2” ,”n 3” ,”n 4” 。
3.4组合类(combination class)
如:[a-m1-4/n]
主意:在内部的类之间不要有空格。
Javascript/ECMAScript不支持某些其他正则表达式实现中的联合类(union class)和交叉类(intersection class)。这意味着不能有类似[a-m[p-z]]或者[a-m[^b-e]之类的模式出现。
3.5预定义类
如下表:
代码 | 等同于 | 匹配 |
. | [^/n/r] | 除了换行和回车之外的任意字符 |
/d | [0-9] | 数字 |
/D | [^0-9] | 非数字字符 |
/s | [/t/n/x0B/f/r] | 空白字符 |
/S | [^/t/n/x0B/f/r] | 非空白字符 |
/w | [a-zA-Z_0-9] | 单词字符 |
/W | [^a-zA-Z_0-9] | 非单词字符 |
4、 量词(quantifier)
可以指定某个特定模式出现的次数。
4.1简单量词
代码 | 描述 |
? | 出现零次或一次 |
* | 出现零次或多次(任意次) |
+ | 出现一次或多次(至少出现一次) |
{n} | 一定出现n次 |
{n,m} | 至少出现n次但不超过m次 |
{n,} | 至少出现n次 |
4.2贪婪的、惰性的、支配性的量词
贪婪 | 惰性 | 支配 | 描述 |
? | ?? | ?+ | 出现零次或一次 |
* | *? | *+ | 出现零次或多次(任意次) |
+ | +? | ++ | 出现一次或多次(至少出现一次) |
{n} | {n}? | {n}+ | 一定出现n次 |
{n,m} | {n,m}? | {n,m}+ | 至少出现n次但不超过m次 |
{n,} | {n,}? | {n,}+ | 至少出现n次 |
注意:浏览器对支配量词的支持还很不完善,IE和Opera不支持支配量词,如果要用它,就会抛出一个错误。Mozilla不会产生错误,但是它会将支配量词看着实贪婪的。
另外:还有一些复杂模式:如分组,反向应用,候选,非捕获性分组,前瞻,边界,多行模式等