3 回答

TA貢獻1946條經驗 獲得超4個贊
基本用法
首先,讓我們看看每個函數的作用:
regexObject。測試(字符串)
搜索正則表達式和指定字符串之間的匹配項。返回true或false。
字符串。匹配(RegExp)
將字符串與正則表達式匹配時,用于檢索匹配項。返回具有匹配項或null沒有匹配項的數組。
由于null評估為false,
if ( string.match(regex) ) {
// There was a match.
} else {
// No match.
}
性能
在性能方面有什么區別嗎?
是的。我在MDN網站上找到了此簡短說明:
如果您需要知道字符串是否與正則表達式regexp匹配,請使用regexp.test(string)。
差異是否顯著?
答案再一次是!我放在一起的這個jsPerf顯示,差異取決于瀏覽器是 ?30 %-?60 %:
結論
使用.test
,如果你想更快的布爾檢查。使用全局標志.match
時,用于檢索所有匹配項g
。

TA貢獻1842條經驗 獲得超13個贊
不要忘記考慮正則表達式中的全局標志:
var reg = /abc/g;
!!'abcdefghi'.match(reg); // => true
!!'abcdefghi'.match(reg); // => true
reg.test('abcdefghi'); // => true
reg.test('abcdefghi'); // => false <=
這是因為Regexp在找到新匹配項時會跟蹤lastIndex。
添加回答
舉報