我正在写一个匹配数字的正则表达式。整个字符串可以有至少6位数字,可以有空格和短划线。
例如
123-45 6 valid
123456 valid
123-56 Invalid
最初我写了一个正则表达式,它在字符串中处理了至少6个字符。但是,它没有用,因为它将破折号和空格作为6的一部分计算。
[\d\s-]{6,}
尝试
[\d]{6,}[\s-]
即便是这个也不行。你能建议如何解决这个问题。
另一种尝试:
[[\d]{6,}[\s]*[-]*]
答案 0 :(得分:4)
要检查是否存在至少6位数字,您可以使用/(?:\d\D*){6,}/
。
如果您还希望它只允许空格和短划线,则可以将模式调整为/^[ -]*(?:\d[ -]*){6,}$/
答案 1 :(得分:1)
使用String.replace
和String.match
函数的解决方案:
var isValid = function(str){
var match = str.replace(/[\s-]/g, "").match(/^\d{6,}$/);
return Boolean(match);
};
console.log(isValid("123-45 6")); // true
console.log(isValid("12345678")); // true
console.log(isValid("123-56")); // false
console.log(isValid("123-567<")); // false
答案 2 :(得分:0)
你可以这样做(在结尾处接受空格和破折号):
(\d[\s-]*){6,}
或者像这样(只有数字之间的破折号和空格):
(\d[\s-]*){5,}\d