Javascript 正则表达式匹配段落中包含新行的句子

Javascript 正则表达式匹配段落中包含新行的句子,javascript,regex,multiline,Javascript,Regex,Multiline,我基本上在html分区中有一段文本。通过单击/激活按钮,我想突出显示一定长度的文本。因此,我需要找到它的索引并添加class=highlight的跨度 因此,我想在innerHtml文本中匹配一个句子,例如: var text = "The quick brown fox jumps over the lazy dog". 但是,该段可能会将句子分成多行,例如: innerHTML = "The quick brown fox jumps over the lazy dog" 而且我无

我基本上在html分区中有一段文本。通过单击/激活按钮,我想突出显示一定长度的文本。因此,我需要找到它的索引并添加class=highlight的跨度

因此,我想在innerHtml文本中匹配一个句子,例如:

var text = "The quick brown fox jumps over the lazy dog".
但是,该段可能会将句子分成多行,例如:

innerHTML = 
"The quick brown 
fox jumps over 
the lazy dog"
而且我无论如何也不能“附加”innerHTML,比如从文本中删除空格/新行

我似乎无法想到或找到正确的正则表达式序列来实现这一点

这不起作用:

var search_regexp = new RegExp(text, 'm');
innerHTML.search(search_regexp);

您可以用单个空格和
匹配来替换
中的换行符

var fnReplaceLR = ( str ) => str.replace(/\s+/g, " " ); //method to replace line-breaks and other consecutive multiple spaces with single space.
var text = "The quick brown fox jumps over the lazy dog";
var innerHTML = 
`The quick brown 
fox jumps over 
the lazy dog`;
var search_regexp = new RegExp( fnReplaceLR( text ) ); //no need for m modifier now
fnReplaceLR( innerHTML ).match( search_regexp ); //match the string
演示

var fnplacelr=(str)=>str.replace(/\s+/g,”)//方法将换行符和其他连续的多个空间替换为单个空间。
var text=“敏捷的棕色狐狸跳过懒狗”;
var innerHTML=
`快速棕色
狐狸跳了过去
懒狗`;
var search_regexp=new regexp(fnplacelr(text))//现在不需要m修饰符
var output=fnReplaceLR(innerHTML).match(search\u regexp)//匹配字符串

控制台日志(输出)好吧,我会这样做的

只需将文本拆分为
\n
,然后加入
,使其成为单行句子格式。现在,您可以使用来检查要匹配的文本是否是其他文本的一部分

var text=“敏捷的棕色狐狸跳过了懒狗”,
stringWithBreakLines=`快速棕色
狐狸跳了过去
懒狗
这是一些额外的问题
html格式的文本`;

console.log(stringWithBreakLines.split(“\n”).join(”).includes(text))
在搜索单词(而不仅仅是空格)之间的任何空格分割时,需要用常规空格标记替换搜索模式中的空格。这将有助于:

var regex = text.split(/\s+/).join('\\s+');
var search_regexp = new RegExp(text, 'm');
innerHTML.search(search_regexp);
拆分(/\s+/).join('\\s+')
的效果是:

  • 在任意大小的空格上拆分输入文本,生成一个单词数组
  • 使用与一个或多个空白字符匹配的
    \s+
    regex标记连接单词。这包括换行符和制表符

  • 比赛后你想做什么?我基本上在html分区中有一段文本。通过单击/激活按钮,我想突出显示一定长度的文本。因此,我需要找到它的索引并添加class=highlight的“s”。谢谢大家的帮助!西蒙·布拉汉的回答起了作用。不幸的是,我无法显示我的upvote,因为它说我在这个新帐户上的声誉不足15个。谢谢@gurvinder372。不幸的是,我不能通过不附加(或“替换”)内部HTML文本来实现这一点。有没有其他方法可以通过正则表达式字符串实现呢?谢谢@George Bailey。不幸的是,我不能通过不附加(或“替换”)内部HTML文本来实现这一点。有没有其他方法可以通过正则表达式字符串来实现呢?这里什么都没有被替换。您的innerHTML将保持原样。
    。拆分
    不会更改原始数组。相反,它返回一个新的arrayah。谢谢你,乔治。我认为我把问题的背景遗漏得太多是错误的。基本上,我需要有句子在原始innerHTML中的位置索引,这样我就可以定位文本并向其中添加“span”。我已经编辑了我的问题陈述,没问题。如果答案能满足您的需求,请勾选;帮助其他有同样问题的人,给我甜蜜的网络积分。