使用正则表达式匹配11或13位数

时间:2014-08-21 11:33:42

标签: javascript regex

我正在编写一个代码,我收到的数字正好是11或13位。但是,问题在于它可能在随机位置包含一些连字符。

有人可以为此建议正则表达式吗?

样本输入(假设只有5位数):
1. 12345 2. 1-234-5 3. 12-34-5 4. 123-45 5. 1-2-34-5

3 个答案:

答案 0 :(得分:3)

试试这段代码。它可能对你有帮助。

var str="123-45";
str.replace( /\D+/g, '');

下面,

\ D - 找一个非数字字符。 因此,代码将使用'

替换非数字。

答案 1 :(得分:1)

删除所有破折号,然后计算剩余的字符数将更加容易,并且可读性更高。

var str = "1-234-5";
var res = str.replace(/-/g, '').length;
if(res === 11 || res === 13) {
    //do whatever
}

答案 2 :(得分:0)

尝试使用:

^(?:-?\d){11}(?:-?\d-?\d)?$

或者,如果-无法排在第一位:

^(?:\d-?){11}(?:\d-?\d)?$