JS正則爲什麼exec會返回null, 先輸出test都返回true了,而exec爲null?原因如下:
如果正則表達式設置了全局標誌,
test()
的執行會改變正則表達式lastIndex
屬性。連續的執行test()
方法,後續的執行將會從 lastIndex 處開始匹配字符串,(同樣改變正則本身的
exec()
lastIndex屬性值
).
所以,如果代碼執行test()查詢了一次,然後執行exec就是第二次查詢了,這時候lastIndex已經改變所以沒有查詢結果,所以返回null。
所以,一般不要把test()和exec()聯用,如果出於測試目的,那麼測試後要把test()刪掉!