我有一个regexp,它检查一个值是否至少有10位数:
if (foo.match(/^\d{10,}$/))
{
// At least 10 digits
}
但是我想将验证分为两步,所以首先我检查foo
是否只有数字,而不是其他字符,然后检查它是否至少有10位数。
我可以使用foo.length
检查10位数部分,但是如何更改上面的正则表达式以检查foo是否只有数字。有什么想法吗?
答案 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");
}