2015-05-30 59 views
-1

我正在使用一个正则表达式来检查一个4位数字,但在我的代码==-1被使用,我很困惑它的工作原理。当输入框中输入的数字小于4位时,我认为会弹出警报,但当输入的数字超过4位时,警报也会弹出。我想知道背后返回-1是什么意思在正则表达式搜索

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"); 
} 
+2

只是一个说明。 '.test'对于排斥检查会更好。 – Downgoat

+0

谢谢,不知道存在。 – Tnoz

+0

为什么使用正则表达式? –

回答

0

逻辑当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;这只是一种简单的方式,说搜索一路走到最后,一无所获。

+0

你能解释为什么它显示-1。为什么它不显示0? – Downgoat

+0

'.search'和'.indexOf'返回字符串中的位置。如果不是我的字符串,它会说它在'-1'处,因为0是Strings/Arrays开始的地方 – Downgoat

相关问题