2009-11-10 108 views
1

我有一个正则表达式用来检查是否值至少有10个数字:的Javascript正则表达式的问题

if (foo.match(/^\d{10,}$/)) 
{ 
// At least 10 digits 
} 

但是我想在2个步骤来划分的验证,所以首先我检查,如果foo得到了唯一的编号,并没有其他字符,然后我检查它是否至少有10位数字。

我可以使用foo.length来检查10位数字部分,但是如何更改上面的正则表达式来检查foo是否只有数字。有任何想法吗?

回答

2

一个解决方案:从“10个以上”改变资格“一个或多个”,正是如此:

if (foo.match(/^\d+$/)) 
{ 
// At least 1 digit 
} 

如果空字符串是可接受的,使用*代替+以匹配“零个或多个”。

3

你已经检查它只有数字。您指定的字符串开始^,后面至少十个位数的模式必须匹配,紧接着字符串结束$

潜行任何非数字的存在,我们的模式将不匹配

这意味着,如果你想把你的测试分成两个步骤,比如说有两个不同的错误消息,你可以先检查长度,然后仍然使用该正则表达式模式。

+0

+1一样我删除评论 – 2009-11-10 17:40:32

+0

我不想先检查长,我要检查其数字或不先。请在回答之前阅读问题 – 2009-11-10 17:48:50

0
if (foo.match(/^\d+$/)) { 
//all digits 
    if(foo.length == 10) { 
    //all digits + 10 lenght 
    //do whatever 
    } 
} else { 
    //issue error message 
} 

这是一种方法。虽然我不明白你为什么需要这样做。你自己的正则表达式已经保证了是为10个字符长,这些10个字符不能是别的然后是数字

+0

如果输入有非数字,请将支票分开以发出不同的错误消息。 – mob 2009-11-10 17:43:27

0
var containsOnlyNumbers = /^\d+$/.test(foo); 
0

失败,如果

foo.match(/\D/) 
0
// Invalid: A non-digit is present 
if (foo.match(/\D/)) { 
    console.warn("Only numbers accepted"); 
} 
// Invalid: foo is all digits, but less than 10 digits 
else if (foo.length < 10) { 
    console.warn("Minimum 10 digits required"); 
} 
// foo is valid 
else { 
    console.info("Great success"); 
}