0

如何在 javascript 中为这种格式的电话号码创建正则表达式?我需要验证电话号码如下

1800YOUSAVE OR 800YOUSAVE OR 8001234567 OR 18001234567

以上都应该没问题。根据我在此处看到的关于堆栈溢出的另一篇文章,我有以下内容,但它在 1800YOUSAVE 或 800YOUSAVE 上失败。对于所有这些,至少前 3 个应该是数字。

var reg1 = /^(?:(?:[0-9]{3}[a-zA-Z0-9]{4,})|(?:[0-9]{1,}))$/; //less than 10
var reg2 = /^(?:(?:[2-9]{3}[a-zA-Z0-9]{7})|(?:[2-9]{1}[0-9]{2,}))$/; //10 digits
var reg3 = /^(?:(?:[1-9]{1}[0-9]{3}[a-zA-Z0-9]{10})|(?:[1-9]{11}))$/; //11 digits
var reg4 = /^(?:(?:[0-9]{7}[a-zA-Z0-9]{7})|(?:[0-9]{1,15}))$/; //12 or more
4

1 回答 1

0

在我看来,您想要一个可选的前导“1”,后跟“800”,后跟 7 个字母或 7 个数字,因此以下内容应该适合:

  var re = /^1?800[a-z]{7}$|^1?800[0-9]{7}$/i;

  alert(re.test('800yousave'));    // true
  alert(re.test('1800yousave'));   // true
  alert(re.test('1800yousavee'));  // false

  alert(re.test('8001234567'));    // true
  alert(re.test('18001234567'));   // true
  alert(re.test('180012345678'));  // false

保持简单有好处。你也可以这样做:

  var re = /^1?800(?:[a-z]{7}|[0-9]{7})$/i;

编辑

如果你想要三个数字而不是“800”,你可以使用:

  var re = /^1?\d{3}(?:[a-z]{7}|[\d]{7})$/i;
于 2013-04-03T01:34:06.243 回答