2016-09-01 13 views
0

テキストの塊から郵便番号を抽出したい。 私の郵便番号は6桁で、560011または560 011とすることができます。私は正規表現(/[0-9]{3}[ ]?[0-9]{3}/)を使用しましたが、これはまた、私の電話番号の最初の6桁を取得します。私の後に[^0-9]を使ってみましたth数字ですが、これも次の文字をキャプチャします。 6桁以上の数字を無視して、郵便番号のみを取得するにはどうすればよいですか?正規表現競合の電話番号と郵便番号

+0

に一致しますか? – ffledgling

+0

ここでPHPを使用しています。 – monsy

答えて

0

あなたの解決策は単語の境界を追加することだと思います。同様

/\b[0-9]{3} ?[0-9]{3}\b/ 

または

/\b\d{3} ?\d{3}\b/ 

あなたの正規表現の風味は文字クラスをサポートしている場合。 1は単語文字クラスのものであり、他ではありません -

ワード境界 - それはかなり異なるクラス、またはからをされている文字の前と後の場合\bにのみ一致します。 の単語文字クラスには桁が含まれているため、正規表現の前後に\bを追加すると、数字の前に数字の後に(単語の文字)のみ一致するようになります。

また、1文字の文字クラス([ ])を持つことは意味をなさない。それは正規表現の中に文字を持っているのと同じです。

See it here at regex101

+0

ありがとうございます!ちょうど私が必要なもの。 – monsy

0

あなたは、後続の非数値を無視して、最初の6つの数値をキャプチャするために括弧を使用することができます。

/([0-9]{3} ?[0-9]{3})[^0-9]/ 

これは、あなたがどのような言語を使用している123456および123 456ではなく、1234567