Javascript 在正则表达式搜索中,返回值-1意味着什么
我使用正则表达式检查4位数字,但在我的代码中使用了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
==-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是字符串/数组的起点