首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于美国电话号码的Regex,该号码还将拾取( 123 )空格和123点

用于美国电话号码的Regex,该号码还将拾取( 123 )空格和123点
EN

Stack Overflow用户
提问于 2011-02-09 21:55:49
回答 3查看 733关注 0票数 0

可能重复:

A comprehensive regex for phone number validation

我来搞定这个。

代码语言:javascript
复制
1?\s*-?\s*(\d{3}|\(\s*\d{3}\s*\))\s*-?\s*\d{3}\s*-?\s*\d{4}

它匹配了很多电话号码,但没有捕捉到这两个号码:

(123) 456-7890或123.456.7890

EN

回答 3

Stack Overflow用户

发布于 2011-02-09 22:04:14

不久前,我用字符串问了一个关于a regex for a certain number of digits的问题。答案给了我这个regex (\D*\d){10}{n}

从那以后,我就一直用这个来验证电话号码。我不在乎他们给我的电话号码是什么格式,只要它包含10位数字。如果你只关心的是你得到区号+电话号码,那么这可能也适用于你。

票数 0
EN

Stack Overflow用户

发布于 2011-02-09 22:19:56

这是你原来的正则表达式的一个简化版本,它应该能满足你的要求。

代码语言:javascript
复制
1?[\s-(.]*?\d{3}[ -).]*?\d{3}[ -.]*?\d{4}
票数 0
EN

Stack Overflow用户

发布于 2011-02-09 23:40:36

几个怪物

抓捕组1,2,3持有电话号码的部分。这是一个赤裸裸的验证。

任何事情都会变得像哥斯拉一样。

区号不需要

/^(?:\s*(?:1(?=(?:.*\d.*){10}$)\s*[.-]?\s*)?(?:\(?\s*(\d{3}|)\s*\)?\s*[.-]?))\s*(\d{3})\s*[.-]?\s*(\d{4})$/

所需区号

/^(?:\s*(?:1(?=(?:.*\d.*){10}$)\s*[.-]?\s*)?(?:\(?\s*(\d{3})\s*\)?\s*[.-]?))\s*(\d{3})\s*[.-]?\s*(\d{4})$/

代码示例(在Perl中)

代码语言:javascript
复制
use strict;
use warnings;

my $rxphone = qr/
^
  (?:                         # Area code group (optional)
     \s*
     (?:
          1 (?=(?:.*\d.*){10}$)     # "1" (optional), must be 10 digits after it
         \s* [.-]?\s*
     )?
     (?: 
        \(?\s* (\d{3}|) \s*\)?      # Capture 1, 3 digit area code (optional)
        \s* [.-]?                   # ---  (999 is ok, so is 999)
     )
  )                           # End area code group
  \s*
  (\d{3})                     # The rest of phone number
  \s*
  [.-]?
  \s*
  (\d{4})
$
/x;

my %phonenumbs = (
 1 => '(123-456-7890',
 2 => '123.456-7890',
 3 => '456.7890',
 4 => '4567890',
 5 =>'(123) 456-7890',
 6 => '1 (123) 456-7890',
 7 => '11234567890',
 8 => ' (123) 4565-7890',
 9 => '1123.456-7890',
 w => '1-456-7890',
);

for my $key ( sort keys %phonenumbs)
{
    if ($phonenumbs{$key} =~ /$rxphone/) {
       print "#$key =>  '$1' '$2' '$3'\n";
    } else {
       print "#$key => not a valid phone number: '$phonenumbs{$key}' \n";
    }
}
__END__

输出

#1 => '123' '456' '7890'

#2 => '123' '456' '7890'

#3 => '' '456' '7890'

#4 => '' '456' '7890'

#5 => '123' '456' '7890'

#6 => '123' '456' '7890'

#7 => '123' '456' '7890'

#8 => not a valid phone number: ' (123) 4565-7890'

#9 => '123' '456' '7890'

#w => not a valid phone number: '1-456-7890'

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4950985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档