修饰符有三个
- i 表示不区分大小写
- m 表示多行匹配,不加m时一个字符串只有一个^和一个$。加了m,每一行都有一个^和一个$。
- g 表示匹配全部
复制代码
<!DOCTYPE html>
<html>
<head>
<title>正则表达式的元字符-修饰符</title>
</head>
<!-- [xyz] -->
<body>
<script type="text/javascript">
var str = 'adcd1234ABCD';
var res = str.match(/a/ig);//字符串中的所有a,不区分大小写,加g,匹配全部。
console.log(res);//['a', 'A']
var res = str.match(/a/i);// 字符串中的所有a,不区分大小写。不加g,匹配一个。
console.log(res);//['a']
var str = "adcd\n12\ndef34ABCD";
var res = str.match(/^\d+$/mg);
console.log(res);//['12'] 加了m可以匹配12不能匹配34,因为三四的前后没有不是开始也不是结束
var res = str.match(/^\d+/g);
console.log(res);//不加m什么也匹配不到,因为字符串不是以数字开头的
var res = str.match(/\d+$/g);
console.log(res);//不加m什么也匹配不到,因为字符串不是以数字结尾的
</script>
</body>
</html>
另外,特别说明一下修饰符g,它的情况比较复杂。
一、表达式对象的exec方法,不加入g,则只返回第一个匹配,无论执行多少次均是如此,如果加入g,则第一次执行也返回第一个匹配,再执行返回第二个匹配,依次类推。
二、表达式对象的test方法,加入g于不加上g没有什么区别。
三、String对象的match方法,不加入g,也只是返回第一个匹配,一直执行match方法也总是返回第一个匹配,加入g,则一次返回所有的匹配。
四、String对象的replace方法,表达式不加入g,则只替换第一个匹配,如果加入g,则替换所有匹配。
五、String对象的split方法,加上g与不加g是一样的
六、String对象的search方法,加不加g也是一样的。
|