大文字と小文字を区別しない正規表現があります。
f?a?(x|csim)?(mob)?(ile\s*?)?(tel)?(e)?(phone|p|t|m)?\s*?:?\s*?(\s*?\(*?\d\)*?){8,10}
そして、これが私のテストケースです:
これらを一致させたい:
- Tel:9555 5454
- 電話0895555454
- モバイル0411111111
- 暴徒0411111111
- モバイル:(0411)111111
- 電話:(08)9555 5454
- M0411111111
- 電話番号:(08)9555 5454
- p:(08)95 55 54 54
- T:0895555454
- ファクシミリ:(08)9555 5353
- ファックス95555353
- F 95 55 53 53
しかし、私はこれらを一致させたくありません
- 0411 111 111
- (08)9555 5454
- 0411111111
基本的に、私は電話番号であると識別したものと一致させたいのですが、そのために識別子が前に付いている場合に限ります。
私の正規表現はプレフィックス付きの識別子と正常に一致しますが、全体が貪欲ではないため、「一致しない」テストケースは失敗します。これは、私の正規表現が「プレフィックスがあれば一致するが、それを必要としない」と指定しているためです。
何か案は?
- 注意:私は正規表現のPerl/PHPバージョンを使用しています。