RegExp 对象
RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。
正则表达式的创建方式
1.文字格式,使用方法如下:
/pattern/flags (即:/模式/标记)
2.RegExp构造函数,使用方法如下:
new RegExp("pattern"[,"flags"]) (即:new RegExp("模式"[,"标记"]))
参数说明
pattern (模式):表示正则表达式的文本,也可以是正则表达式对象。
flags (标记):是一个可选的字符串,包含属性 "g"、"i" 和 "gi",属性说明见下文。如果 pattern 是正则表达式对象,而不是字符串,则必须省略此参数。
flags各属性值说明
g:global match(全局匹配)
i:ignore case(忽略大小写)
gi:both global match and ignore case(匹配所有可能的值,也忽略大小写)
注意:文字格式中的参数不要使用引号标记,而构造函数的参数(当参数是字符串时)则要使用引号标记。所以下面的两种创建方式是等价的:
var reg = /ab+c/g; var reg = new RegExp("ab+c","g");
另外,当使用构造函数创建正则表达式的时候,若参数是字符串,在文字格式中需要转义的地方,到了构造函数的字符串参数中就要进行双重转义。
因为,文字格式的正则表达式里,使用元字符(下面会提到什么是元字符)都要进行转义,而字符串中,使用字符“”要对其自身转义。
也就是说,构造函数创建正则表达式,其第一个参数为字符串时,如果要用到元字符,都要进行双重转义。
例如,下面的两条语句是等价的:
var reg = new RegExp("\字符串"); //双重转义 var reg = /字符串/;
元字符
( [ { ^ $ | ) ? * +
任何时候要使用这些元字符 ,都必须对它们进行转义。如:
var reg = new RegExp("\[0-9]"); var reg = /[0-9]/;
元字符可以与常规字符搭配,就能搭配出具有不同意义的表达式,各种意义不同的表达式组合起来,就能组成匹配功能强大的复杂表达式。
下面将列出元字符与常规搭配,所具有的不同意义。
方括号用于查找某个范围内的字符
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[^abc] | 查找任何不在方括号之间的字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
[a-z] | 查找任何从小写 a 到小写 z 的字符。 |
[A-Z] | 查找任何从大写 A 到大写 Z 的字符。 |
[A-z] | 查找任何从大写 A 到小写 z 的字符。 |
[adgk] | 查找给定集合内的任何字符。 |
[^adgk] | 查找给定集合外的任何字符。 |
(red|blue|green) | 查找任何指定的选项。 |
特殊含义字符
元字符 | 描述 |
---|---|
. | 查找单个字符,除了换行符和回车之外的任意字符。 等价于:[^ ] |
w | 查找单词字符。 等价于:[a-zA-Z_0-9] |
W | 查找非单词字符。 等价于:[^a-zA-Z_0-9] |
d | 查找数字。 等价于:[0-9] |
D | 查找非数字字符。 等价于:[^0-9] |
s | 查找空白字符。 等价于:[ x0Bf ] |
S | 查找非空白字符。 等价于:[^ x0Bf ] |
匹配单词边界。 | |
B | 匹配非单词边界。 |