Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么JavaScript中的语法是regex.test(string)而不是string.test(regex)?_Javascript_Regex - Fatal编程技术网

为什么JavaScript中的语法是regex.test(string)而不是string.test(regex)?

为什么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

在JavaScript中,在
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; };