0

電話番号を検証するための正規表現を作成しましたが、何かわからない問題があります。必須:

  1. 先頭の国コードは '011' です。これは括弧内または括弧なしで指定できます
  2. 1 ~ 3 桁の国コード
  3. 2 桁の都市コード
  4. 市内電話番号の形式のコードddd-dddd(3 桁のダッシュの次に 4 桁)

グループの正当な区切り文字は、ダッシュ (-) とスペースです。
例:(011) 23 55 345-9878または011-3-33-987-6543.

これが私が試したことです:

if($_ =~ /^:?([011]:?){1}[ -]+[0-9]\d{2}+[ -]+[0-9]\d{2}+[0-9]\d{3}-[0-9]\d{4}/){
    say "Line5 Good: ", $currLine;
} else {
    say "Error in Line 5: Not a valid phone number ";
}
4

2 に答える 2

1

この正規表現は問題なくテストできます。お好みで味付けしてください。

(\(011\)|^011)([ |-])\d?\d?\d([ |-])\d{2}([ |-])\d{3}([ |-])\d{4}

(\(011\)|^011)(011) または 011 のみが番号の先頭で受け入れられることを保証するため、)011、011) などの他のすべての順列が忍び寄る心配はありません。残りは、必要な書式設定を処理します。どちらか一方に少し乗りすぎたかもしれませんが、グループの方が読みやすいと思います...

ここで自分でテストできます: http://gskinner.com/RegExr/?36s51

Roberto Navarro に乾杯して、gskinner.com をオンにします。

于 2013-10-23T06:10:03.903 に答える
0

これは正規表現である必要があります。\(?011\)?[ -]\d?\d?\d?[ -]\d{2}[ -]\d{3}[ -]\d{4}

http://gskinner.com/RegExr/で検証済みですが、リンクを送信する方法が見つかりませんでした。

スクリーンショット:)ところで、青いハイライトは一致を示しているため、この場合、すべての条件が一致しました。スクリーンショットのタイプミス、「3 つ以上の国コードの一致に失敗しました」と表示されるはずです

ここに画像の説明を入力

于 2013-10-23T04:35:13.217 に答える