gpt4 book ai didi

JavaScript 正则表达式 - 匹配除之外的所有内容

转载 作者:行者123 更新时间:2023-12-02 20:05:45 25 4
gpt4 key购买 nike

我正在编写一个 JavaScript 模板解析器,并且已经接近最终的解决方案,但是我想在模板的绑定(bind) block 中允许存在空格(我将其与正则表达式匹配)。

现在我有以下内容:

var codeblock = new RegExp("%\{[\S)]+\}%", 'g');

给定一个如下所示的模板行:

<td align="right" style="width: 123px;">%{toFixedEx(#{extendedPrice()}#,2,2)}%</td>

将匹配:

%{toFixedEx(#{extendedPrice()}#,2,2)}%

但是我想在 %{}% 之间允许空格和换行符,所以我尝试了以下正则表达式:

var codeblock = new RegExp("%\{[\S\s)]+\}%", 'g');

最终匹配:

%{toFixedEx(#{surcharge()}#,2 ,4)}%</td>
<td align="right" style="width: 123px;">%{toFixedEx( #{extendedPrice()}#,2,2)}%

我想要做的是匹配类似的内容:

 %{
if (condition) {
toFixedEx(#{surcharge()}#,2 ,4)
}
else {
toFixedEx(0,2,4)
}
}%

匹配在 }% 处结束,而不是继续到模板中的最后一个右大括号。我尝试了减法字符类,但看起来它们在 JavaScript 中不起作用。

最佳答案

var codeblock = new RegExp("%\{[\S\s]+?\}%", 'g');

+?*?的意思是:尽可能少的匹配,以满足RE下一部分的条件。

我还从您的 RE 中删除了括号 ),因为 [\S\s] 匹配每个字符(包括换行符)。

关于JavaScript 正则表达式 - 匹配除之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7455545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com