[英]Problem with Javascript RegExp-mask
我有一个看起来像这样的字符串:
{theField} > YEAR (today, -3) || {theField} < YEAR (today, +3)
我希望将其替换为:
{theField} > " + YEAR (today, -3) + " || {theField} < " + YEAR (today, +3) + "
我已经试过了:
String.replace(/(.*)(YEAR|MONTH|WEEK|DAY+)(.*[)]+)/g, "$1 \" + $2 $3 + \"")
但这给了我:
{theField} > YEAR (today, +3) || {theField} > " + YEAR (today, +3) + "
有人有什么想法吗?
当您拥有.*
时,应谨慎使用贪婪匹配。 通常,这不执行您想要的操作-它与尽可能多的字符串匹配。 您需要使用否定的字符类在达到某个字符(例如[^)]
时停止匹配),或者使用惰性匹配.*?
。 这是使用惰性量词的方法:
s = '{theField} > YEAR (today, -3) || {theField} < YEAR (today, +3)';
result = s.replace(/((YEAR|MONTH|WEEK|DAY).*?\))/g, '" + $1 + "')
结果:
{theField} > " + YEAR (today, -3) + " || {theField} < " + YEAR (today, +3) + "
请注意,我在您的正则表达式中做了一些整理:
DAY+
删除+
[)]+
更改为\\)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.