連続する 9 個の数字または 14 個の連続する数字のいずれかに一致する次の正規表現を作成しました。
^[0-9]{14}$|^[0-9]{9}$
この正規表現を 9 つの連続する数字または 14 つの連続する数字または null 値に一致させるにはどうすればよいですか?
基本的に、ユーザーがこのフィールドに値を入力する必要がないように、正規表現を変更したいと考えています。つまり、このフィールドの検証をオプションにします。
連続する 9 個の数字または 14 個の連続する数字のいずれかに一致する次の正規表現を作成しました。
^[0-9]{14}$|^[0-9]{9}$
この正規表現を 9 つの連続する数字または 14 つの連続する数字または null 値に一致させるにはどうすればよいですか?
基本的に、ユーザーがこのフィールドに値を入力する必要がないように、正規表現を変更したいと考えています。つまり、このフィールドの検証をオプションにします。
どうですか:
if (value.length && !value.match(/^(?:[0-9]{14}|[0-9]{9})$/) {
alert('invalid value');
}
文字列が空の場合はパスします。空でない場合は、正規表現と一致する必要があります。
正規表現のみのソリューション:
if (!value.match(/^(?:[0-9]{14}|[0-9]{9})?$/) {
alert('invalid value');
}
別の選択肢を追加するだけです。
^[0-9]{14}$|^[0-9]{9}$|^$
オプションの 9 にリファクタリングして、その後に別のオプションの 5 桁を追加することもできます。
^([0-9]{9}([0-9]{5})?)?$
キャプチャ グループが必要ない場合は、 を使用した非キャプチャ グループの(?:...)
方がわずかに高速ですが、このコンテキストでは、違いはごくわずかです。