我的多个字符串如下所示
###
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]
方法,因为它更短且(恕我直言)更具可读性。