gpt4 book ai didi

javascript - Javascript RegExp-mask 问题

转载 作者:行者123 更新时间:2023-11-28 02:56:12 24 4
gpt4 key购买 nike

我有一个看起来像这样的字符串:

{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) + "

有人有什么想法吗?

最佳答案

当你有.*时,你应该小心使用贪婪匹配。通常这不会做你想要的事情——它匹配尽可能多的字符串。当您到达某个字符(例如 [^)])时,您需要使用负字符类来停止匹配,或者使用 lazy匹配 .*?。以下是使用惰性量词的方法:

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) + "

请注意,我已经在您的正则表达式中进行了一些清理:

  • 按照 KennyTM 的说明,从 DAY+ 中删除了 +
  • [)]+ 更改为 \)
  • 将文字替换字符串从双引号更改为单引号,以便替换文本中的引号不需要转义
  • 删除了在 YEAR 和以下左括号之间放入结果中的额外空格

关于javascript - Javascript RegExp-mask 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2565498/

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