這兩者之間是否存在差異?替換(/ [^ a-z0-9]/gi,'')和替換(/ [^ a-zA-Z0-9]/g'')之間的區別
replace(/[^a-z0-9]/gi, '');
replace(/[^a-zA-Z0-9]/g, '');
此外,是否有使用一種或另一種在任何時間顯著差異?
編輯:有關性能,我做了一些測試http://jsperf.com/myregexp-test
這兩者之間是否存在差異?替換(/ [^ a-z0-9]/gi,'')和替換(/ [^ a-zA-Z0-9]/g'')之間的區別
replace(/[^a-z0-9]/gi, '');
replace(/[^a-zA-Z0-9]/g, '');
此外,是否有使用一種或另一種在任何時間顯著差異?
編輯:有關性能,我做了一些測試http://jsperf.com/myregexp-test
不,由第一,i
末使正則表達式不區分大小寫的意義,它並不重要,如果它發現的字母大寫或小寫。
第二個匹配大寫和小寫字母,但確保它們是大寫或小寫。所以你最終會得到相同的結果。
請注意,這通常不正確。例如,'Σ','σ'和'ς'都是不區分大小寫的,如果你簡單地在像[[Σσ]'這樣的字符類中枚舉其中的兩個,你就無法得到它們,就像那樣錯過最後的西格瑪,'ς'。因爲Javascript不支持Unicode,所以你在這裏搞砸了,但是在一個真正的^ H^H^H^H語言中,casefolding會在'/Σ/ i'匹配中拾取它們。 – tchrist
不,他們做同樣的事情 – sdfadfaasd
請注意它的實際功能。嘗試''天真「.replace(/ [^ a-z0-9]/gi,'');' – NullUserException
@NullUserException但最終JS中沒有解決這個問題的解決方案。即使'\ W'也一樣。 – xanatos