郵便番号の正規表現があるとしましょう。
'\<[0-9]{5}(-[0-9]{4})?\>'
これは次の場合に機能します。
XXXXX
XXXXX-XXXX
ただし、次の数値とも一致します。
XXXX-
.XXXX-
これを防ぐために何を使用しますか?
郵便番号の正規表現があるとしましょう。
'\<[0-9]{5}(-[0-9]{4})?\>'
これは次の場合に機能します。
XXXXX
XXXXX-XXXX
ただし、次の数値とも一致します。
XXXX-
.XXXX-
これを防ぐために何を使用しますか?
オリジナルポスターです。
'^\<[0-9]{5}(-[0-9]{4})?\>$'
と
'\<^[0-9]{5}(-[0-9]{4})?$\>'
次のようなノイズのある行には一致しません。
lskdjfasfldj XXXXX asfsdfsdf
sdkdsa XXXXX-XXXX asdfsd
2 つの正規表現は、行の途中ではなく、行の先頭でのみ一致します。
また、UNIX システムで grep -E を使用して基本的な正規表現を使用しています。
一致を文字列の最初から最後まで固定したいようです。そうしないと、入力の一部も一致させようとします。
'^\<[0-9]{5}(-[0-9]{4})?\>$'
この文字列が最初と最後でなければならないことを指定しません。^
行頭を示す と行末を示す を追加するだけ$
です。
したがって、結果は次のようになります(言語または何かに必要である\<
と仮定して)。\>
'\<^[0-9]{5}(-[0-9]{4})?$\>'