Javascript正则表达式问题

时间:2009-11-10 17:32:38

标签: javascript regex

我有一个regexp,它检查一个值是否至少有10位数:

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

但是我想将验证分为两步,所以首先我检查foo是否只有数字,而不是其他字符,然后检查它是否至少有10位数。

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

6 个答案:

答案 0 :(得分:3)

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

在那里潜行任何非数字,且模式不匹配

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

答案 1 :(得分:2)

一种解决方案:将资格从“10或更多”更改为“一个或多个”,因此:

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

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

答案 2 :(得分:0)

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

这是一种方式。虽然我不明白为什么你需要那样做。你自己的正则表达式已经确保长度是10个字符而且这10个字符不能是其他任何数字

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果

则失败
foo.match(/\D/)

答案 5 :(得分: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");
}