我在一些网站上找到了这个代码,它工作得很完美。它验证电话号码是以下格式之一: (123) 456-7890或123-456-7890

问题是我的客户端(我不知道为什么,可能是客户端)想要添加另一种格式,连续的十个数字,像这样:1234567890。

我用这个正则表达式,

/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/

我如何添加它也验证另一种格式?我不擅长使用正则表达式。


当前回答

验证电话号码+返回格式化数据

函数有效电话(str){ str = str.replace(/[^0-9]/g, ''); var l = 尺寸长度; if(l<10) 返回 ['错误', '电话号码长度< 10']; var tel = '', num = str.substr(-7), 代码 = str.substr(-10, 3), coCode = ''; if(l>10) { coCode = '+' + str.substr(0, (l-10) ); } tel = coCode +' ('+ code +') '+ num; 返回 [“成功”,电话]; } console.log(validTel('+1 [223] 123.45.67'));

其他回答

我建议使用一些更清晰的东西(特别是考虑到谁必须维护代码)……是什么:

var formats = "(999)999-9999|999-999-9999|9999999999";
var r = RegExp("^(" +
               formats
                 .replace(/([\(\)])/g, "\\$1")
                 .replace(/9/g,"\\d") +
               ")$");

regexp是从一个清晰的模板构建的?添加一个新的将是一个无需动脑,甚至可能是客户自己可以做到这一点,在“选项”页面。

试试这个js函数。 如果匹配则返回true,如果失败则返回false 裁判

函数ValidatePhoneNumber(电话){ 返回/ ^ \ + ?([0 - 9]{2})\)?(-。] ?([0 - 9]{4})[-。] ?([0 - 9]{4})美元/ test(电话); }

我要做的是忽略格式并验证数字内容:

var originalPhoneNumber = "415-555-1212";

function isValid(p) {
  var phoneRe = /^[2-9]\d{2}[2-9]\d{2}\d{4}$/;
  var digits = p.replace(/\D/g, "");
  return phoneRe.test(digits);
}

如果你想找10个数字,那就忽略除数字-以外的所有数字

   return value.match(/\d/g).length===10;

验证电话号码+返回格式化数据

函数有效电话(str){ str = str.replace(/[^0-9]/g, ''); var l = 尺寸长度; if(l<10) 返回 ['错误', '电话号码长度< 10']; var tel = '', num = str.substr(-7), 代码 = str.substr(-10, 3), coCode = ''; if(l>10) { coCode = '+' + str.substr(0, (l-10) ); } tel = coCode +' ('+ code +') '+ num; 返回 [“成功”,电话]; } console.log(validTel('+1 [223] 123.45.67'));