如何计算正则表达式匹配'但不是\'在一个字符串中

时间:2015-12-01 06:16:39

标签: javascript regex

我知道如何在javascript中处理正则表达式的基础知识。我可以数数'和\“在字符串中。但如何匹配'而不是\'在一个字符串中。到目前为止,我有一个解决方法,减去两个匹配的结果。是否有可能找到计数包括'并排除\'在一个正则表达式模式。

1 个答案:

答案 0 :(得分:1)

在JavaScript中,您没有negative lookbehind assertions,因此您无法在'之前轻松检查是否存在奇数个反斜杠,除非您将这些字符设为比赛。

因此,你需要做一些更复杂的事情 - 匹配所有以单个未转义的引号结尾的字符串,有效地将整个输入分成块,每个引用一个。然后计算那些块:

/[^\\']*(?:\\.[^\\']*)*'/g

将匹配字符串的所有部分。

测试live on regex101.com

<强>解释

[^\\']*   # Match any number of characters except backslashes and quotes.
(?:       # Start of non-capturing group: Match...
 \\.      # an escaped character (any escape sequence like \' or etc.),
 [^\\']*  # followed by any number of characters except backslashes and quotes.
)*        # Do this as often as needed (even 0 times)
'         # until you can match a single (unescaped) quote