我尝试使用JavaScript匹配两个标记%{
和}%
之间的内容。
我有正则表达式在regex测试器中工作,但是当我将它们放入我的代码时它们不起作用。我认为这可能是一个逃避问题,但我不确定。
以下正则表达式有效,但不允许使用空格:
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>
答案 0 :(得分:5)
使用字符串时,您需要在任何特殊的正则表达式修饰符上双重转义反斜杠:
var databinder = new RegExp("%\\{[\\S\\s]*\\}%", 'g');
或者您可以使用正则表达式文字:
var databinder = /%\{[\S\s]*?\}%/g;