Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 在正则表达式搜索中,返回值-1意味着什么_Javascript - Fatal编程技术网

Javascript 在正则表达式搜索中,返回值-1意味着什么

Javascript 在正则表达式搜索中,返回值-1意味着什么,javascript,Javascript,我使用正则表达式检查4位数字,但在我的代码中使用了==-1,我对它的工作原理感到困惑。我以为当输入框中输入少于4位数字时,警报会弹出,但当我输入超过4位数字时,警报也会弹出。我想知道背后的逻辑 function checkpostal(){ var re4digit=/^\d{4}$/ //regular expression defining a 4digit number between beginning and end value if (document.myform.myi

我使用正则表达式检查4位数字,但在我的代码中使用了
==-1
,我对它的工作原理感到困惑。我以为当输入框中输入少于4位数字时,警报会弹出,但当我输入超过4位数字时,警报也会弹出。我想知道背后的逻辑

function checkpostal(){
  var re4digit=/^\d{4}$/ //regular expression defining a 4digit number between beginning and end value

  if (document.myform.myinput.value.search(re4digit)==-1) //if match failed
    alert("Please enter in a 4 digit number");
}

在Chrome控制台中测试正则表达式模式时,我得到了以下结果:

> "1233334".search(/^\d{4}$/)
-1
> "124".search(/^\d{4}$/)
-1
> "124444".search(/^\d{4}$/)
-1
> "4444".search(/^\d{4}$/)
0
> "44444".search(/^\d{4}$/)
-1
-1表示在测试正则表达式的字符串中找不到要查找的表达式

您的正则表达式查询正在搜索您正在测试的字符串,以查找长度正好为4位的内容。这意味着当您针对大于或小于4位数的内容进行测试时,.search(r4digit)将返回-1


这类似于Javascript的String.prototype.indexOf函数,该函数在未找到子字符串时也返回-1;这只是一种简单的说法,表示搜索一直到最后都没有找到任何东西

只是一张纸条
.test
更适合于排斥检查。谢谢,我不知道存在排斥检查。如果成功,search()将返回字符串中正则表达式的第一个匹配项的索引。否则,它返回-1。你能解释一下为什么它显示-1。为什么不显示0?
.search
.indexOf
返回字符串中的位置。如果字符串不是I,它会说它位于
-1
,因为0是字符串/数组的起点