重複の可能性:
最終的な郵便番号と郵便番号の正規表現は何ですか?
郵便番号に関する3つの条件すべてを満たすことができるRegexが必要です。例えば-
- 12345
- 12345-6789
- 12345 1234
ご意見やご提案をいただければ幸いです。よろしくお願いします!
重複の可能性:
最終的な郵便番号と郵便番号の正規表現は何ですか?
郵便番号に関する3つの条件すべてを満たすことができるRegexが必要です。例えば-
ご意見やご提案をいただければ幸いです。よろしくお願いします!
回答:
^\d{5}(?:[-\s]\d{4})?$
^
=文字列の開始。\d{5}
= 5桁に一致(条件1、2、3の場合)(?:…)
=グループ化[-\s]
=スペース(条件3の場合)またはハイフン(条件2の場合)に一致\d{4}
= 4桁に一致(条件2、3の場合)…?
=その前のパターンはオプションです(条件1の場合)$
=文字列の終わり。\s
タブや改行を含むすべての空白に一致します。
00544
は有効な郵便番号です。544
ではありません。
/(^\d{5}(?:[\s]?[-\s][\s]?\d{4})?$)/
上記の3つの条件の場合のみ、これらの式も機能する可能性があります。
^\d{5}[-\s]?(?:\d{4})?$
^\[0-9]{5}[-\s]?(?:[0-9]{4})?$
^\[0-9]{5}[-\s]?(?:\d{4})?$
^\d{5}[-\s]?(?:[0-9]{4})?$
次のように、5桁と4桁の間に予期しない追加のスペースがあるか、9桁の連続した郵便番号がある場合は、
123451234
12345 1234
12345 1234
たとえば、この式は、制約の少ない2次オプションになります。
^\d{5}([-]|\s*)?(\d{4})?$
jex.imは正規表現を視覚化します。
const regex = /^\d{5}[-\s]?(?:\d{4})?$/gm;
const str = `12345
12345-6789
12345 1234
123451234
12345 1234
12345 1234
1234512341
123451`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
これはRegExを頻繁に使用するほとんどの人にとって明白なことかもしれませんが、読者がRegExを初めて使用する場合は、私のプロジェクトの1つに役立つ観察結果を指摘する必要があると思いました。
@kennytmからの以前の回答では:
^\d{5}(?:[-\s]\d{4})?$
…?=その前のパターンはオプションです(条件1の場合)
標準の5桁と+4の両方の郵便番号を許可する場合、これは良い例です。
米国の「郵便番号+ 4」形式の郵便番号のみを一致させるには(条件2と3のみ)、最後を削除するだけで?
常に最後の5文字グループと一致します。
RegExをいじるのに私がお勧めする便利なツールは以下にリンクされています。
RegExが必要なものと似たようなものを見つけたとき、私はこのツールを頻繁に使用しますが、少し調整することができます。また、洗練されたRegEx参照メニューと、変更内容が入力したサンプルテキストの一致にどのように影響するかを把握できる有益なインターフェイスも備えています。
何か間違ったことをしたり、重要な情報を見逃したりした場合は、修正してください。
\d{5}([ \-]\d{4})?
です。