我正在尝试设置具有以下要求的电话字段:
我这样做对数字和空格都很好,但我不知道如何限制11个数字。
function validatePhone(phone) {
var filter = /^(?=.*\d)[\d ]+$/;
if (filter.test(phone)) {
return phone;
} else {
return phone.slice(0,-1);
}
我不想将所有条目计为11.我想只计算数字而不是空格,总数应该是11或10
答案 0 :(得分:2)
此建议的解决方案删除所有空格,然后匹配字符串,可选地从+
开始,然后严格地为11位。
document.querySelector('#phoneNumber1').addEventListener('input', function(e){
if (/^\+?\d{11}$/.test(e.target.value.replace(/ /g, ''))) {
console.log('valid');
} else {
console.log('invalid');
}
});

<input type="text" id="phoneNumber1">
&#13;
答案 1 :(得分:1)
这是一个在第十一个数字之后修剪结果的函数,忽略空格
function validatePhone(phoneNumber){
return /( *\d){0,11}/.exec(phoneNumber)[0]
}
console.log(validatePhone('12345671'))
console.log(validatePhone('12345678901'))
console.log(validatePhone('123456789012'))
console.log(validatePhone('1234 56 78 901'))
console.log(validatePhone('123456 7 89012'))
&#13;
正则表达式查找任意数量的空格,然后查找一个数字,最多11次并返回第一个匹配。
您仍然需要处理起始加号和失败(例如不匹配),但这是一个起点