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

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

我用这个正则表达式,

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

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


当前回答

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

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

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

其他回答

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

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);
}

试试这个

/^[\+]?\d{2,}?[(]?\d{2,}[)]?[-\s\.]?\d{2,}?[-\s\.]?\d{2,}[-\s\.]?\d{0,9}$/im

有效的格式:

(123) 456-7890 (123)456-7890 The 123-456-7890 123.456.7890 1234567890 + 31636363634 +3(123) 123-12-12 + 3 (123) 123-12-12 + 3 (123)1231212 +3(123) 12312123 075-63546725

我使用了@marty提供的一个,并对它进行了一些修改,以适应更多的情况:

/^[\+]?([0-9][\s]?|[0-9]?)([(][0-9]{3}[)][\s]?|[0-9]{3}[-\s\.]?)[0-9]{3}[-\s\.]?[0-9]{4,6}$/im

有效的格式:

+1 123 4567890 + 11234567890 + 1 (123)4567890 + 1 (123)456-7890 +1 (123) 456-7890 +1 (123)456 7890 +1 123 456-7890 +1 123 456 7890 +1 123-456-7890 The 123-456-7890 123 456-7890 123 456 7890 123 4567890 1234567890


正则表达式

使用以下Regex模式:

/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im

这样的:<输入模式 ="/^[\+]?[(]?[ 0 - 9] {3} [)] ? [\ s \。]? [0 - 9]{3}[\ s \。]吗?[0 - 9] {4 6} $ / im”> *


有效的格式:

(123) 456-7890, (123) 456-7890, 123-456-7890, 123.456 7890。, 1234567890, + 31636363634前 075-63546725


试试这个正则表达式

/[^0-9+() -.]/g

使用的例子:

<input type="tel" id="txtUserMobile" onkeyup="this.value=this.value.replace(/[^0-9+() -.]/g,'')">

享受