我正在编写一个代码,我收到的数字正好是11或13位。但是,问题在于它可能在随机位置包含一些连字符。
有人可以为此建议正则表达式吗?
样本输入(假设只有5位数):
1. 12345
2. 1-234-5
3. 12-34-5
4. 123-45
5. 1-2-34-5
答案 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)?$