我尝试使用 JavaScript 来匹配两个标记 %{
和 }%
之间的内容。
我有可以在正则表达式测试器中使用的正则表达式,但是当我将它们放入我的代码中时它们不起作用。我相信这可能是一个逃避问题,但我不确定。
以下正则表达式有效,但不允许空格:
var databinder = new RegExp("%\{(.)+\}%", 'g');
以下正则表达式在正则表达式测试器中工作,并允许空格,但它不会在我的代码中返回任何匹配项:
var databinder = new RegExp("%\{[\S\s]*?\}%", 'g');
只有当我删除以下内容时它才有效:
[\S\s]*?
是什么导致正则表达式在第二个示例中不起作用?
这是我匹配的文本示例:
<td align="right" style="width: 123px;">%{toFixedEx(#{surcharge()}#,2,4)}%</td>
<td align="right" style="width: 123px;">%{toFixedEx(#{extendedPrice()}#,2,2)}%</td>
最佳答案
使用字符串时,您需要对任何特殊正则表达式修饰符上的反斜杠进行双重转义:
var databinder = new RegExp("%\\{[\\S\\s]*\\}%", 'g');
或者您可以使用正则表达式文字:
var databinder = /%\{[\S\s]*?\}%/g;
关于javascript - 与 [\S\s]* 匹配?与 (.)+ 正则表达式比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456794/