2017-04-23 10 views
2

JavaScriptでregexの一致を検索する構文はstringで、string.search(regex)です。同様に、match,replaceおよびsplitと同様である。JavaScriptがregex.test(string)で、string.test(regex)ではないのはなぜですか?

regex.test(string)のように、testの場合、正規表現/文字列の順序が逆になるのはなぜですか?他の正規表現関数と同じようにstring.test(regex)はなぜですか?

+2

'test'は' RegExp'オブジェクトのメソッドです。だから、文字列にマッチする正規表現をテストしている。構文の問題は組み込みメソッドではありませんか?あなたが望むなら、独自のString.testメソッドを実装することができます。 http://jsbin.com/bejikabedi/1/edit?js,console – Gerardo

+0

確かに、構文自体からはっきりしているので、実際には説明できません。 'match'などは' RegExp'オブジェクトの 'test'メソッドではないのはなぜですか? – globewalldesk

+1

私は単純な考え方は、文字列は正規表現を 'テストする 'ことはできませんが、正規表現が文字列を' test'するのには完全に意味があるということです。 – sisanared

答えて

2

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; }; 

+0

愚かな私は、SOがそのような言語設計の決定の議論の場だと思った。 – globewalldesk

関連する問題