5

電話番号とキャプチャする必要がある複数の 6 桁の番号を含むフリー テキストのブロックがあります。6 桁の数字にはオプションの「,」があります。

6 桁の数字の例は 123456 または 123,456 ですが、1 234 456 8901 のような電話番号と区別する必要があります。

私は持っている :

    preg_match_all(",\[\W_][0-9]{3}(?:,)[0-9]{3}[\W_][\D]\d",$html, $value); 

これを行うより良い方法はありますか?

4

1 に答える 1

2

サンプル入力なしで正規表現を確認するのは少し難しいですが、いくつかの観察事項があります。

  • [0-9]に置き換えることができます\d(すでに最後に使用しているため)

  • [\D]とまったく同じ\Dです。それ自体が文字クラスであり、含める文字がさらにない限り、で囲まれなくても問題ありません[]

  • (?:,),キャプチャしたくないか、量指定子がないためです。

  • ,\[\W_]ここでは、文字クラスを使用したいようですが\、最初の をエスケープし[ます。実際にリテラルが必要な場合\\\特殊文字であるため、エスケープする必要があります。

于 2013-08-26T04:20:58.570 に答える