2016-05-16 8 views
-3

有効な電話番号のみを含む行を行内に表示するPerlスクリプトを作成するにはどうすればよいですか?有効な電話番号のみを行内に表示するPerlスクリプト?

(888).888-8888は有効な数値で、8は任意の数値であるとします。ここで

So the sample input is 

this is nota number 
3214235234 
(410).977-2132 
my num is ((410.222-1231)) 
test 234 test 

Output: 
(410).977-2132 
my num is ((410.222-1231)) 

は、私がこれまで

if ($string =~ /^(?:(?:\+?1\s*(?:[.]\s*)?)?(?:\(\s*([.][2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$) { 
     # is a number 
    } else { 
     # is not 
    } 

を持っているもので、私は私が間違った正規表現を持っているかもしれないと思います。あなたは助けてもらえますか?でラインをキャッチする

+6

を「私は私が間違っている正規表現を持っているかもしれないと思います。 "だからこそ、わからないコードを盲目的にコピーしてはいけません。国家コードと拡張機能を含め、あなたがサポートしようとしているよりもはるかに広い範囲の入力のために書かれている[Stack overflowの答えは、あなたがそれを持っていると仮定している](http://stackoverflow.com/a/123666/176646)もちろん、 '(000).000-0000'はおそらく有効な*電話番号ではありません...あなたはそれにマッチしてもよろしいですか? – ThisSuitIsBlackNot

+0

はい私はそれにマッチしたい – Sam

+1

なぜあなたは間違った正規表現を持っていると思いますか?あなたがマッチしたくない入力と一致する入力は何ですか? – ysth

答えて

0

: (888)0.888から8888 または ((888.888から8888))は あなたは、この正規表現を使用することができます

if ($string =~ /^.*?\({0,2}\d{3}\){0,2}\.\d{3}-\d{4}\){0,2}/) { 
    # is a number 
} else { 
    # is not 
} 
関連する問題