正则表达式匹配数字位数

时间:2016-07-09 21:55:21

标签: javascript regex

我正在写一个匹配数字的正则表达式。整个字符串可以有至少6位数字,可以有空格和短划线。

例如

123-45 6  valid
123456    valid
123-56    Invalid

最初我写了一个正则表达式,它在字符串中处理了至少6个字符。但是,它没有用,因为它将破折号和空格作为6的一部分计算。

[\d\s-]{6,}

尝试

[\d]{6,}[\s-]

即便是这个也不行。你能建议如何解决这个问题。

另一种尝试:

[[\d]{6,}[\s]*[-]*]

3 个答案:

答案 0 :(得分:4)

要检查是否存在至少6位数字,您可以使用/(?:\d\D*){6,}/。 如果您还希望它只允许空格和短划线,则可以将模式调整为/^[ -]*(?:\d[ -]*){6,}$/

答案 1 :(得分:1)

使用String.replaceString.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