2011-02-09 10 views
0

可能性の重複になるアメリカの電話番号の:
A comprehensive regex for phone number validation正規表現もピックアップ(123)のスペースと123ドット

私はこれを持っています。

1?\s*-?\s*(\d{3}|\(\s*\d{3}\s*\))\s*-?\s*\d{3}\s*-?\s*\d{4} 

それは、電話番号の多くをマッチングされますが、それはこれら二つをキャッチいない:

(123)456-7890または123.456.7890

+2

私の目、彼らはあなたは、そのようなスパム満たされたタイトルを使用しないでください(...出血していますあなたの質問にSEOしようとしていません!ただスパムのように見えます) –

+2

あなたは何をやっているのか理解してみませんか? :) – bzlm

+1

@cyperpineあなたは本当に気にしていますか?あなたがそれを検証してはならない電話番号を書く方法はたくさんあります。内線番号はどうですか?または、「(555)555-5555がティムを求める」のような小さなメモ? –

答えて

0

しばらく前に私は約質問をa regex for a certain number of digits文字列で答えは私にこの正規表現(\D*\d){10}{n}を与えました。

私は実際に電話番号の検証にこれを使用しました。私は10桁の数字が入っている限り、どのような形式で電話番号を入力しても構わない。あなたが心配しているのは、市外局番+電話番号を得ているということだけですが、これもあなたのために働くかもしれません。

0

これは、元の正規表現を簡略化したものです。

1?[\s-(.]*?\d{3}[ -).]*?\d{3}[ -.]*?\d{4} 
0

モンスター
キャプチャグループ1,2,3のカップルは、電話番号の一部を保持します。これは裸の骨の検証です。
それ以上のものは、ゴジラのようになります。

市外局番必要はない
/^(?:\s*(?:1(?=(?:.*\d.*){10}$)\s*[.-]?\s*)?(?:\(?\s*(\d{3}|)\s*\)?\s*[.-]?))\s*(\d{3})\s*[.-]?\s*(\d{4})$/

エリアコードは(Perlで)
/^(?:\s*(?:1(?=(?:.*\d.*){10}$)\s*[.-]?\s*)?(?:\(?\s*(\d{3})\s*\)?\s*[.-]?))\s*(\d{3})\s*[.-]?\s*(\d{4})$/

コードサンプルを必要

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'

関連する問題