正则表达式Javascript电话号码验证最小长度检查

时间:2012-03-12 09:54:25

标签: javascript regex validation

我想要一个非常简单的Regex for Javascript验证电话号码,允许10 digits并检查min numbers should be 10 and max 12,包括- dash two times123-123-1234

我在互联网上找到了一些,但没有一个适用于min / max length

期待在这里快速回应。

谢谢!

3 个答案:

答案 0 :(得分:2)

你可以这样做

/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$)  )[\d-]+$/

here on Regexr

(?!...)negative lookahead assertion

(?=...)positive lookahead assertion

^                                          # Start of the string
    (?!.*-.*-.*-)                          # Fails if there are more than 2 dashes
    (?=(?:\d{8,10}$)                   # if only digits to the end, then length 8 to 10
        |(?:(?=.{9,11}$)[^-]*-[^-]*$)  # if one dash, then length from 9 to 11
        |(?:(?=.{10,12}$)
            [^-]*-[^-]*-[^-]*$         # if two dashes, then length from 10 to 12
         )
    )
[\d-]+                                     # match digits and dashes (your rules are done by the assertions)
$                                          # the end of the string

答案 1 :(得分:2)

你要求的不是一个简单的正则表达式,也可以在没有任何使用的情况下解决。

function isPhoneNumberValid(number){
  var parts, len = (
    parts = /^\d[\d-]+\d$/g.test(number) && number.split('-'),
    parts.length==3 && parts.join('').length
  );
  return (len>=10 && len<=12)
}

可以肯定这可能比使用编译的正则表达式慢一点,但如果你不以这种方式检查数千分之一的电话号码,开销就会很小。

这在任何方面都不完美,但可能符合您的需求,但请注意,这允许在任何地方使用两个破折号,不包括数字的开头和结尾,因此这将返回true作为111--123123之类的字符串}。

答案 2 :(得分:0)

使用正则表达式没有简单的方法,特别是如果你允许破折号出现在某些不同的点上。

如果您仅允许在示例中的位置使用短划线,那么它将是^\d{3}-?\d{3}-?\d{4}$

这一个:^[\d-]{10,12}$匹配长度为10到12的字符串,仅包含数字和短划线,但它也会匹配,例如-1234567890-