问题描述
想知道js中单行模式和多行模式的区别是什么?
能不能举些例子?
问题出现的环境背景及自己尝试过哪些方法
查阅了很多资料,解释都不是很清楚,还是想通过例子来看清楚,唯独下面这篇文章讲了一下,但还是有点不太明白
希望各位大佬帮忙解释一下
https://segmentfault.com/a/11...
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
var text = 'this has bean a short summer';
var regx = /(.)hort/g;
if(regx.test(text)){
alert(RegExp.input);//this has bean a short summer
alert(RegExp.lastMatch);//short
alert(RegExp.lastParen);//s
alert(RegExp.leftContext);//this has bean a
alert(RegExp.rightContext);// summer
alert(RegExp.multiline);//false
}
你期待的结果是什么?实际看到的错误信息又是什么?
alert(RegExp.multiline);//false
这个浏览器输出的是false,想知道如何改text这个字符串,才能使浏览器输出true
单行模式和多行模式的区别
开关单行模式影响的是元字符"."的匹配:
单行模式开启时,元字符"."匹配包括换行符n在内的任意字符。
单行模式关闭时,元字符"."匹配不包括换行符n的任意字符。
开关多行模式影响的是元字符"^"和"$"的匹配:
如果 multiline 为 false,那么 "^" 匹配字符串的开始位置,而 "$" 匹配字符串的结束位置。
如果 multline 为 true,那么 "^" 匹配字符串开始位置以及 "n" 或 "r" 之后的位置,而 "$" 匹配字符串结束位置以及 "n" 或 "r" 之前的位置。
多行模式就是根据 r 或 n 把字符串分隔为多个单行模式去分别匹配
有无修饰符m,决定是否执行多行模式。
例子
想知道如何改text这个字符串,才能使浏览器输出true
multiline是RegExp对象的实例所有的属性,并不是RegExp对象所有的。
可以看看下面的链接:
RegExp对象