js的单行模式和多行模式

问题描述

想知道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

阅读 4.2k
2 个回答

单行模式和多行模式的区别
开关单行模式影响的是元字符"."的匹配:
单行模式开启时,元字符"."匹配包括换行符n在内的任意字符。
单行模式关闭时,元字符"."匹配不包括换行符n的任意字符。

开关多行模式影响的是元字符"^"和"$"的匹配:
如果 multiline 为 false,那么 "^" 匹配字符串的开始位置,而 "$" 匹配字符串的结束位置。
如果 multline 为 true,那么 "^" 匹配字符串开始位置以及 "n" 或 "r" 之后的位置,而 "$" 匹配字符串结束位置以及 "n" 或 "r" 之前的位置。
多行模式就是根据 r 或 n 把字符串分隔为多个单行模式去分别匹配
有无修饰符m,决定是否执行多行模式。


例子

var s = "haha, hello!\nhaha, ni hao a!";
//多行模式未开启,"^" 匹配字符串的开始位置
alert(s.replace(/^haha/g, "heihei"));//heihei, hello!\nhaha, ni hao a!
//多行模式开启,"^" 匹配字符串开始位置以及 "\n"之后的位置
alert(s.replace(/^haha/gm, "heihei"));//heihei, hello!\nheihei, ni hao a!

想知道如何改text这个字符串,才能使浏览器输出true

var text = 'this has bean a short summer';
var regx = /(.)hort/gm;

 if(regx.test(text)){
    
    alert(regx.multiline);//true,因为有修饰符m
 }

multiline是RegExp对象的实例所有的属性,并不是RegExp对象所有的。
可以看看下面的链接:
RegExp对象

var regx = /(.)hort/gm
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏