我已經找到了exec方法最好的地方是雄辯的Javascript第9章:請有人能幫我理解正則表達式的exec方法嗎?
「正則表達式也有一個exec(執行)方法,將返回null如果沒有匹配,並與有關的信息返回一個對象從exec返回的對象有一個索引屬性,告訴我們在字符串中成功匹配開始的位置,除此之外,對象看起來像(實際上是)一個字符串數組,其第一個元素是字符串被匹配......「
到目前爲止,這是有道理的,但隨後變得有點混亂:
」當正EXPRES sion包含用括號分組的子表達式,與這些組相匹配的文本也將顯示在數組中。整場比賽始終是第一要素。「
好的,但...
」的下一個元素是由第一組(其開口括號至上表達式中的一個)一致的部分,則第二組,以此類推。」
var quotedText = /'([^']*)'/;
console.log(quotedText.exec("she said 'hello'"));
// → ["'hello'", "hello"]
我的困惑是,在這個例子中,重複囉。我不明白爲什麼它會2個打着招呼給我回來嗎?
然後將題目是由以下包裝:
「當一個組完全沒有最終匹配(例如,後面跟着一個問號)時,它在輸出數組中的位置將保持未定義狀態。同樣地,當一組匹配多次,只有最後一場比賽在數組中結束了。」
console.log(/bad(ly)?/.exec("bad"));
// → ["bad", undefined]
console.log(/(\d)+/.exec("123"));
// → ["123", "3"]
這最後一句話,並例子讓我困惑....
任何光棚上本就非常感謝!
一個比賽,一個用於捕獲 –
*」我不我不明白爲什麼它會給我兩個hellos回來嗎?「*表達式包含一個捕獲組,它偶然捕獲整個匹配,因此你得到相同的值兩次 –
@FelixKling'該表達式包含一個捕獲組,它偶然捕獲整個匹配'錯,首先匹配''你好'2,抓住'你好'(不含引號) –