为什么JavaScript中的语法是regex.test(string)而不是string.test(regex)?
在JavaScript中,在为什么JavaScript中的语法是regex.test(string)而不是string.test(regex)?,javascript,regex,Javascript,Regex,在JavaScript中,在string中搜索regex匹配项的语法是string.search(regex)。与匹配、替换和拆分类似 那么,为什么在test的情况下,regex/string的顺序是相反的,就像在regex.test(string)中一样?为什么不像其他正则表达式函数那样string.test(regex) 那么,为什么在test中regex/string的顺序是相反的,就像在regex.test(string)中一样?为什么不像其他正则表达式函数那样string.test(r
string
中搜索regex
匹配项的语法是string.search(regex)
。与匹配
、替换
和拆分
类似
那么,为什么在test
的情况下,regex/string的顺序是相反的,就像在regex.test(string)
中一样?为什么不像其他正则表达式函数那样string.test(regex)
那么,为什么在test中regex/string的顺序是相反的,就像在regex.test(string)
中一样?为什么不像其他正则表达式函数那样string.test(regex)
因为这就是语言的设计方式。因此,这不是讨论或猜测此类语言设计决策的地方,在许多情况下,这些决策的背景已经在时间的迷雾中消失
如果您非常想使用String#test
函数,那么
String.prototype.test = function(re) { return re.test(this); };
或
所有关于增强内置类型原型的危险的正常警告。因为
test
是RegExp
对象的一种方法。因此,您正在测试正则表达式以匹配字符串。不是语法问题,只是一个内置方法。如果需要,可以实现自己的String.test方法。当然可以,但从语法本身来看,这是很清楚的,所以这并不能真正解释它。为什么test
是RegExp
对象的一种方法,而match
等则不是呢?我想一个简单的想法是,字符串不能test
正则表达式,但正则表达式测试test
字符串是完全有意义的。这是有意义的。但是字符串匹配
,替换
,以及拆分
一个正则表达式,而不是相反,这是否也有意义呢?对不起,我还没看到呢。这种矛盾使我烦恼!不同的人可能在不同的方法上工作,因此不一致。愚蠢的我,我认为这是讨论此类语言设计决策的地方。
String.prototype.test = function(re) { return this.search(re) !== -1; };