在JavaScript中,在string
中搜索regex
匹配項的語法是string.search(regex)
。與match
,replace
和split
類似。爲什麼JavaScript中的語法regex.test(string)而不是string.test(regex)?
那麼爲什麼在test
的情況下正則表達式/字符串順序顛倒了,如regex.test(string)
?爲什麼不是string.test(regex)
與其他正則表達式函數一樣?
在JavaScript中,在string
中搜索regex
匹配項的語法是string.search(regex)
。與match
,replace
和split
類似。爲什麼JavaScript中的語法regex.test(string)而不是string.test(regex)?
那麼爲什麼在test
的情況下正則表達式/字符串順序顛倒了,如regex.test(string)
?爲什麼不是string.test(regex)
與其他正則表達式函數一樣?
那麼,爲什麼在測試的情況下正則表達式/字符串順序顛倒了,如
regex.test(string)
?爲什麼不是string.test(regex)
與其他正則表達式函數一樣?
因爲這是語言設計的方式。 SO並不是討論或猜測這種語言設計決定的地方,在許多情況下,背景在時間的迷失中失去了。
如果你是在具有String#test
功能,因此意圖,然後
String.prototype.test = function(re) { return re.test(this); };
或
String.prototype.test = function(re) { return this.search(re) !== -1; };
所有關於增強內置類型的原型的危害正常的告誡。
傻了,我認爲SO是討論這種語言設計決定的地方。 – globewalldesk
因爲'test'是'RegExp'對象的一個方法。所以你正在測試正則表達式來匹配一個字符串。不是一個語法問題只是一個內置的方法。如果這是你想要的,你可以實現你自己的String.test方法。 http://jsbin.com/bejikabedi/1/edit?js,console – Gerardo
當然可以,但是從語法本身來看,這一切都很清楚,所以並沒有真正解釋它。爲什麼'test'是'RegExp'對象的一個方法,而'match'等不是? – globewalldesk
我想一個簡單的方法來思考它是,一個字符串不能'測試'一個正則表達式,但它使得一個正則表達式測試一個字符串的總意義。 – sisanared