javascript - 与 [\S\s]* 匹配?与 (.)+ 正则表达式比较

标签 javascript regex

我尝试使用 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/

相关文章:

javascript - 动画问题和 jQuery 中的大量 stop() 调用

属性和方法具有相同名称的 JavaScript 类

javascript - React.JS,如何从子组件渲染组件

iphone - 在 obj-c 中使用正则表达式在字符串中搜索模式

python - re.sub 只替换两次

javascript - 从全屏按下转义时更改 CSS 类

JavaScript - 点击后收到多个信号

ruby - 从字符串中删除第一次出现的给定字符

javascript - ng-pattern 正则表达式匹配多个条件

regex - 如何在 lua 正则表达式中匹配此模式,以便它可以捕获字符串内的内容