JS正则表达式中的修饰符

修饰符

1. i(ignore case) 不区分大小写
var pattern = /hello/i;
var str = 'Hello world';
console.log(pattern.ignoreCase);  //true
console.log(pattern.test(str));   //true
console.log(pattern.exec(str));   //Array [ "Hello" ]
console.log(str.match(pattern));  //Array [ "Hello" ]
2. g(global) 全局

        RegExp.lastIndex 如果匹配模式带有g,这个属性存储在整个字符串中下一次检索的开始位置,这个属性会被exec(),test()方法调用到(不带g永远返回0)。

var pattern = /hello/ig;
var str = 'Hello helloworld';
console.log(pattern.global);  //true
console.log(pattern.test(str));  //true
console.log(pattern.lastIndex);  //5
console.log(pattern.exec(str));  //Array [ "hello" ]
3. m(multiline) 多行

如果目标字符串中不含有换行符\n,即只有一行,那么/m修饰符没有任何意义。

var pattern = /hello/im;
var pattern1 = /hello/i;
var str = 'Hello world';   //目标字符串不含换行符\n
console.log(pattern.multiline);  //true
console.log(pattern1.multiline);  //false
console.log(pattern.test(str));   //true
console.log(pattern1.test(str));   //true
console.log(pattern.exec(str));   //Array [ "Hello" ]
console.log(pattern1.exec(str));   //Array [ "Hello" ]

如果正则表达式中不含有^$匹配字符串的开头或结尾,那么/m修饰符没有任何意义。

var pattern = /hello/im;    //正则表达式不含^或$
var pattern1 = /hello/i;
var str = 'Hello\nworld';  
console.log(pattern.test(str));   //true
console.log(pattern1.test(str));   //true

        也就是说只有当目标字符串含有\n,而且正则表达式中含有^$的时候,/m修饰符才有作用。如果multiline 为 false,那么^与字符串的开始位置相匹配,而$与字符串的结束位置相匹配。 如果 multiline 为 true,那么^与字符串开始位置以及\n\r之后的位置相匹配,而$与字符串结束位置以及\n\r之前的位置相匹配。

var pattern = /^hello/im;    //正则表达式不含^或$
var pattern1 = /^hello/i;
var str = 'Hi\nhello\rworld';  
console.log(pattern.test(str));   //true
console.log(pattern1.test(str));   //false

        \r \n在windows下代表换行,如果只有1个\n也是一样的效果。由于str是以Hi开头的字符串,所以匹配pattern1的结果是false;由于str是多行字符串(含有\n),而第二行是以hello开头,所以匹配pattern结果是true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值