我想不通,我用我的生命,爲什麼這個正則表達式JS正則表達式,基本先行
^\.(?=a)$
不匹配
".a"
人知道爲什麼嗎?
我要在這裏下車提供的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
我想不通,我用我的生命,爲什麼這個正則表達式JS正則表達式,基本先行
^\.(?=a)$
不匹配
".a"
人知道爲什麼嗎?
我要在這裏下車提供的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
它不工作的原因是因爲超前,實際上並不消耗任何字符,所以你的匹配位置不前進享受。
^\.(?=a)$
匹配行的開始 - 後跟一個字面.
(\.
- 這也匹配)(^
此匹配),然後(不消耗任何字符),檢查是否下一個字符是一個文字a
((?=a)
)。它是,所以這個lookahead匹配。然後它聲稱你的位置在字符串的末尾($
)。這是不是的情況,因爲我們仍然對.
之後,所以比賽失敗。
另一種可能的匹配表達式將
^\.(?=a$)
如上述只是工作,但有關該行的末尾斷言包含在先行,所以這個時候,它匹配。
你的正則表達式只會匹配,再接一個「A」的期間,不包括在比賽中「A」。 另一個問題是你在基本上被忽略的角色後面使用$。
刪除$,它將按照描述工作。
獎勵:我一直在使用這個最近http://www.regexpal.com/
regex101.com是另一個有用的正則表達式測試網站 –
顯然,引號字符「只是指定字符串 –
雙您的反斜槓。 –
like \\。(?= a)$ ....爲什麼? –