① var patt=new RegExp(pattern,modifiers);
② var patt=/pattern/modifiers;
> pattern(模式) 描述了表达式的模式
> modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配
注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:
var reg = new RegExp("\\w+");
var reg = /\w+/;
修饰符 (修饰符用于执行不区分大小写和全文的搜索。)
1. i - 修饰符是用来执行不区分大小写的匹配。
var str = "Visit RUnoob";
var patt1 = /runoob/i;
console.log(str.match(patt1))
运行结果:['RUnoob', index: 6, input: 'Visit RUnoob', groups: undefined]
对上述代码运行结果分析如下:
(1).match方法在有匹配结果的时候返回值是一个数组。
(2).index属性值返回首次匹配到子字符串的位置。
(3).input属性值是原字符串"antzone"。
(4).groups属性当前并不被支持,暂时不做介绍。
2. g - 修饰符是用于执行全文的搜索(而不是在找到第一个就停止查找,而是找到所有的匹配)。
//全文查找 "is"
var str = "Is this all there is?";
var patt1 = /is/g;
console.log(str.match(patt1))
运行结果:(2) ['is', 'is']
-------i g 结合查找---------
//全文查找和不区分大小写搜索 "is"
var str = "Is this all there is?";
var patt1 = /is/gi;
console.log(str.match(patt1));
运行结果:(3) ['Is', 'is', 'is']
3. m - 执行多行匹配(使边界字符 ^ 和 $ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。)
//匹配字符串'an'
var str = "This is an\n antzone good";
var reg = /an$/m
console.log(str.match(reg));
运行结果:['an', index: 8, input: 'This is an\n antzone good', groups: undefined]
说明:可以匹配字符串"an",因为采用了多行匹配。
var str = "This is an\n antzone good";
var reg1 = /an$/
console.log(str.match(reg1));
运行结果:null
说明:不能够匹配字符串"an",尽管"an"后面已经换行了,但是并没有采用多行匹配,所以不是字符串行的结尾。
-------g m 结合匹配-------
m 修饰符可以使 ^ 和 $ 匹配一段文本中每行的开始和结束位置。
g 只匹配第一行,添加 m 之后实现多行。
var str = "runoobgoogle\ntaobao\nrunoobweibo";
var n1 = str.match(/^runoob/g); // 匹配一个
var n2 = str.match(/^runoob/gm); // 多行匹配
console.log(n1)
console.log(n2)
运行结果:['runoob']
(2) ['runoob', 'runoob']
4. s - 特殊字符圆点 . 中包含换行符 \n(默认情况下的圆点 . 是匹配除换行 符 \n 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 \n。)
//在字符串中查找:
var str = "google\nrunoob\ntaobao";
var n1 = str.match(/google./); // 没有使用 s,无法匹配\n
var n2 = str.match(/runoob./s); // 使用 s,匹配\n
console.log(n1)
console.log(n2)
运行结果:null
['runoob\n', index: 7, input: 'google\nrunoob\ntaobao', groups: undefined]
var str = "Hello world!";
//查找"Hello"
var a = /Hello/g;
var result = a.exec(str);
console.log("返回值: " + result);
//查找 "World"
b = /World/g;
result = b.exec(str);
console.log("返回值: " + result);
运行结果:返回值: Hello
返回值: null
var str = "Hello world!";
//查找"Hello"
var a = /Hello/g;
var result = a.test(str);
console.log("返回值: " + result);
//查找 "World"
b = /World/g;
result = b.test(str);
console.log("返回值: " + result);
运行结果:返回值: true
返回值: false