• ベストアンサー

電話番号(市外局番)の正規表現

単純な正規表現だとおもうのですがわからないので教えてください。 [0-9][0-9]-[0-9][0-9][0-9][0-9] で電話番号が取れるのですが、この逆つまり電話番号でないもの の場合どうしたらよいのでしょうか? [^[0-9][0-9]-[0-9][0-9][0-9][0-9]] とか色々やってみているのですが。

質問者が選んだベストアンサー

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

マッチする時 =~ マッチしない時 !~ こんな感じかな? if($data !~ /(\d{2,5}\-)?\d{1,4}\-\d{4,4}/ ){ } 郵便番号にマッチしてしまう可能性には関知しない。

investyou
質問者

お礼

おかげさまでできました、ありがとうございます。

その他の回答 (3)

回答No.4

if($tel !~ /^\d{2,4}\-\d{2,4}\-\d{4,6}$/){ } こんな感じでしょうか。 単純に下みたいなのでいい気がしますけど。 if($tel !~ /^[\d\-]+$/){ }

investyou
質問者

お礼

おかげさまでできました、ありがとうございます。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

マッチした場合に対するelseでは、いけないのでしょうか。 if (正規表現){ #マッチした場合なので、無処理 }else{ #マッチしないので、以下にそのときの処理を書く ・・・ ・・・ } 上記のようにしては、いかがでしょうか。

investyou
質問者

補足

おかげさまでできました、ありがとうございます。

回答No.1

電話番号の区切り(-)は、地域によって入れる場所が違ったりするんで、私は[^\d\-](数字と区切り文字以外)にマッチしなければOKとしてます。 sub isTell {return ($_[0] !~ /[^\d\-]/);}

investyou
質問者

補足

ありがとうございます。 すみません説明不足でした。 用意された一行のデータは 住所、氏名、電話番号となっています。 電話番号にはは12-3456とか 123-4567とかパターンはありますが 今回はその1行にxx-xxxxのパターンを含まない場合にマッチさせたいです。 お願いします。

関連するQ&A