2015-12-01 40 views
1

我知道如何在JavaScript中處理正則表達式的基本知識。我可以在字符串中計算'和'。但如何在字符串中匹配'而不是'。截至目前,我有一個解決方法是減去兩個比賽的結果。是否有可能在單個正則表達式模式中找到計數包括'並排除\'。如何計算字符串中'但不是'的正則表達式匹配

回答

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