如何匹配具有前导和尾随条件的字符串以及匹配的组

时间:2016-09-28 15:33:37

标签: javascript regex

我希望匹配不在其他引号之前或之后的字符串"$USER"。我可以对尾随引用使用否定前瞻,但无法弄清楚如何实现负面后瞻。使用此字符串:

'4' = "$NULL$" AND '3' = """$NULL$" AND '7' = """$NULL$"""

它应该只匹配第一个"$NULL$"。这是我提出的正则表达式:

("\$NULL\$"|"\$KEY\$")(?!")

但它缺少了后视。

我已经看到许多答案暗示用replace函数模仿负面的后视,但我无法理解如何通过负面预测和捕获来完成这项工作。

2 个答案:

答案 0 :(得分:3)

您可以使用捕获组并在替换模式中使用反向引用:



var regex = /(^|[^"])("\$NULL\$")(?!")/g;
var str = `'4' = "\$NULL\$" AND '3' = """\$NULL\$" AND '7' = """\$NULL\$"""`;
console.log(str.replace(regex, "$1[NEW_VAL]$2[/NEW_VAL]"));




详细

  • (^|[^"]) - 第1组(替换模式中称为$1)捕获字符串(^)的开头或除"以外的任何字符
  • ("\$NULL\$") - 第2组(替换模式中称为$2)捕获"$NULL$"字符串
  • (?!") - "
  • 后面没有

答案 1 :(得分:1)

如果您的条件只是引号字符不在匹配组之前或之后,为什么不使用插入符?

[^"]("\$NULL\$")[^"]