修饰符
修饰符是影响整个正则规则的特殊符号,会对匹配结果和部分内置函数行为产生不同的效果,JavaScript正则表达式(以后简称正则)中,包含以下三个修饰符:
- i(intensity):大小写不敏感
- g(global):全局查找,对于一些特定的函数,将迭代完整的字符串,获得所有的匹配结果,而不仅仅在得到第一个匹配后就停止进行
- m(multiple):检测字符串中的换行符,主要是影响字符串开始标识符
^
和结束标识符$
的使用
示例
函数说明:
match
:http://www.w3school.com.cn/jsref/jsref_match.asp
test
:http://www.w3school.com.cn/jsref/jsref_test_regexp.asp
修饰符i的使用
var s1 = 'Hello';
var s2 = 'hello';
var p1 = /Hello/;
var p2 = /Hello/i;
console.log(p1.test(s1));
console.log(p1.test(s2));
console.log(p2.test(s1));
console.log(p2.test(s2));
输出
true
false
true
true
说明
可以看到正则p2
会忽略s2
中大写的H
的到匹配结果
修饰符g的使用
var p1 = /hello/;
var p2 = /hello/g;
var str = 'hello world, hello world';
console.log(str.match(p1));
console.log(str.match(p2));
输出
说明
p1
中未使用g修饰符,因此在匹配到第一个hello
时,便停止后续匹配,提取匹配子字符串及匹配位置。而p2
则会完整地匹配字符串,直至字符串结束位,并将所有结果提取出来。
修饰符m的使用
var str = 'hello world,\nhello world';
var p1 = /^hello/g;
var p2 = /^hello/gm;
console.log(str.match(p1));
console.log(str.match(p2));
注释:^
在此标识字符串的开始(在后续会进行详细介绍)
输出
说明
注意str
中存在换行符\n
。在p1
和p2
存在字符串开始位置标识符,使用p1
会对str
进行整体匹配,因此只存在一个字符串开始位,和一个字符串结束位,因此只匹配到一个hello
。而p2
会将str
根据换行符进行分割,可以理解为存在多个子串,因此存在多个字符串开始位和字符串结束位,所以会匹配到第二个hello
。