我不知道爲什麼這些正則表達式是不等價的:JS正則表達式:匹配重複模式
/(a)(a)(a)/.exec ("aaa").toString() => "aaa,a,a,a" , as expected
/(a){3}/.exec ("aaa").toString() => "aaa,a" :(
/(a)*/.exec ("aaa").toString() => "aaa,a" :(
如何必須最後兩個被改寫,使他們表現得像第一?重要的是我想要任意倍數匹配和記憶。
下面一行
/([abc])*/.exec ("abc").toString() => "abc,c"
表明,只有一個字符每括號保存 - 最後一場比賽。
我在前一天試圖解決這個確切的問題。如果您搜索它們,還有其他關於這個確切問題的主題。簡短的回答是,這在JS中不受支持。 ':(''確實是 – acbabis
你能舉一個你遇到這個問題的例子嗎?就像你希望匹配的一個例子字符串和你想要的返回值一樣。「aaa」之間差異的原因僅僅是那裏的事實是一個不同數量的捕獲組 – Nucleon
我只是試圖用regexp來實現字符串的爆炸函數,並且想進一步做一些語法分析的實驗,我通過'str.match(/([^ \ n \ t \( \)] + | \(| \))/ g)' - 這也把括號當作記號。但是我認爲這不是問題的解決方案 – Christoph85LE