javascript正则表达式匹配多行

标签 javascript regex multiple-matches

<分区>

我的多个字符串如下所示

###
some content
that I need to match
and might have some special character in it such as | <> []
###

我正在尝试获取散列之间的内容。我试过下面的正则表达式,但它不匹配并返回 null。

var regex = /### ((.|\n)*) ###/;
var match= regex.exec(aboveContentAsString);
console.log(match[1]);

最佳答案

JavaScript 缺少 s (singleline/dotall) 正则表达式选项,但您可以通过将 . 替换为 [\s\S] 来解决它> (匹配任何字符是空格或不是空格,这基本上意味着匹配所有内容)。另外,让你的量词变懒,去掉模式中的空格,因为 JS 中也没有 x(扩展)选项:

var regex = /###([\s\S]*?)###/;

例子:

var input = "###\nsome content\nthat I need to match\nand might have some special character in it such as | <> []\n###";

var regex = /###([\s\S]*?)###/;
document.getElementById("output").innerText = regex.exec(input)[1];
<pre id="output"></pre>

您原来的方法可能行得通,但我也会在其中添加 \r:

var regex = /###((?:.|[\r\n])*?)###/;

但我更喜欢 [\s\S] 方法,因为它更短且(恕我直言)更具可读性。

关于javascript正则表达式匹配多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28889767/

相关文章:

javascript - reactJS 中的 setTimeout 和 clearTimeout

regex - 在 Perl 中使用正则表达式获取字符串中的多个匹配项

java - 如何在 Java 中获取多个正则表达式匹配项?

Python正则表达式匹配多次

javascript - 对于不相关的模型字段, Angular react 形式抛出 "Cannot find control with name"

javascript - 使用脚本在另一个div中显示子菜单

Python 正则表达式 findall 不打印所有

java - 家庭作业的正则表达式

regex - 用于删除 JSTL 标记中的特殊字符的正则表达式

javascript - 如何使用从 Node js Controller 发送的变量替换悬停时 EJS 模板中的文本?