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

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

我用这个正则表达式,

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

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


当前回答

/ s ^ + 1 ? \ * d {3 \ (? ? }(?:\)|[-|\ s]) \ s * ? [d {3} - | \ s] ?\ d{4} -美元

这篇文章虽然老了,但还是想留下我的一点贡献。 这些是可以接受的: 5555555555 555-555-5555 (555) 555 - 5555 1 (555) 555 - 5555 1 555 555 5555 1 555-555-5555 1 (555) 555-5555

这些是不被接受的:

555 - 5555 >接受这个用:^ \ + ? 1 ? \ s * ? \ (? (\ d {3 })?(?:\)|[-|\ s]) ? \ s * ? \ d {3} (- | \ s) ?\ d {4} $

5555555 - - - >接受这个用:^ \ + ? 1 ? \ s * ? \ (? (\ d {3 })?(?:\)|[-|\ s]) ? \ s * ? \ d {3} (- | \ s) ?\ d {4} $

1 555) 555 - 5555 123 * * & ! !asdf # 55555555 (6505552368) 2 (757) 622-7382 0 (757) 622-7382 -1 (757) 622-7382 2 757 622-7382 10 (757) 622-7382 27576227382 (275) 76227382 2 (757) 6227382 2 (757) 622 - 7382 (555) 5 (55) -5555

这是我使用的代码:

function telephoneCheck(str) {
  var patt = new RegExp(/^\+?1?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/);
  return patt.test(str);
}

telephoneCheck("+1 555-555-5555");

其他回答


正则表达式

使用以下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


这个reg ex适用于国际电话号码和多种格式的移动手机号码。

下面是正则表达式: / ^ (+ {1} \ d {2,3} \ s ? [(] {1} \ d {1,3} [)] {1} \ s ? \ d + | + \ d {1} {2,3} \ s \ d + | \ d +) {1} [\ s | - ? \ d + ([\ s | - ? \ d +){1,2} /美元

下面是JavaScript函数

function isValidPhone(phoneNumber) {
    var found = phoneNumber.search(/^(\+{1}\d{2,3}\s?[(]{1}\d{1,3}[)]{1}\s?\d+|\+\d{2,3}\s{1}\d+|\d+){1}[\s|-]?\d+([\s|-]?\d+){1,2}$/);
    if(found > -1) {
        return true;
    }
    else {
        return false;
    }
}

这将验证以下格式:

+44 07988-825 465(用任意连字符组合代替空格,但+44后面必须只有空格)

+44(0) 7988-825 465(用连字符的任何组合代替空格,但连字符不能直接存在于(0)之前或之后,(0)之前或之后的空格不需要存在)

123 456-789 0123(以任何连字符组合代替空格)

123-123 123(以任何连字符组合代替空格)

123 123456(空格可以用连字符代替)

1234567890

所有格式都不能存在双空格或双连字符。

这是可行的:

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

的吗?字符表示前一组匹配0次或1次。组(-|\s)将匹配-或|字符。添加?在正则表达式中第二次出现此组后,允许您匹配10个连续数字的序列。

一个很简单的方法:

"9001234567".match(/^\d{10}$/g)

/ s ^ + 1 ? \ * d {3 \ (? ? }(?:\)|[-|\ s]) \ s * ? [d {3} - | \ s] ?\ d{4} -美元

这篇文章虽然老了,但还是想留下我的一点贡献。 这些是可以接受的: 5555555555 555-555-5555 (555) 555 - 5555 1 (555) 555 - 5555 1 555 555 5555 1 555-555-5555 1 (555) 555-5555

这些是不被接受的:

555 - 5555 >接受这个用:^ \ + ? 1 ? \ s * ? \ (? (\ d {3 })?(?:\)|[-|\ s]) ? \ s * ? \ d {3} (- | \ s) ?\ d {4} $

5555555 - - - >接受这个用:^ \ + ? 1 ? \ s * ? \ (? (\ d {3 })?(?:\)|[-|\ s]) ? \ s * ? \ d {3} (- | \ s) ?\ d {4} $

1 555) 555 - 5555 123 * * & ! !asdf # 55555555 (6505552368) 2 (757) 622-7382 0 (757) 622-7382 -1 (757) 622-7382 2 757 622-7382 10 (757) 622-7382 27576227382 (275) 76227382 2 (757) 6227382 2 (757) 622 - 7382 (555) 5 (55) -5555

这是我使用的代码:

function telephoneCheck(str) {
  var patt = new RegExp(/^\+?1?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/);
  return patt.test(str);
}

telephoneCheck("+1 555-555-5555");