ユーザーに0〜20の範囲の数字を入力させたいのですが、01と1の両方を入力できます
これは私がこれまでに持っているものです
/^[1-9]|0[1-9]|1[0-9]|2[0]$/
しかし、うまくいきません。
ユーザーに0〜20の範囲の数字を入力させたいのですが、01と1の両方を入力できます
これは私がこれまでに持っているものです
/^[1-9]|0[1-9]|1[0-9]|2[0]$/
しかし、うまくいきません。
問題は、 の優先順位がand|
よりも低いため、パターンはorまたはorを意味します。1 桁の値のみが によって制限され、 のみによって制限されます。^
$
^[1-9]
0[1-9]
1[0-9]
2[0]$
^
20
$
^
代替の各ブランチでandを繰り返すか$
、代替をラップし(?:...)
て非キャプチャ部分式を作成できます。
/^[1-9]$|^0[1-9]$|^1[0-9]$|^20$/
/^(?:[1-9]|0[1-9]|1[0-9]|20)$/
(私は自由に に変更[0]
しました0
。)
どうですか
/^([0-1]?[0-9]|20)$/
問題は、20 が特殊なケースであることです。2 番目のセクションで説明します。最初のセクションは残りをカバーします。コンテキストを指定しなかったため、perl スタイルの正規表現を想定しています。
これを試して
/^([01]?\d|20)$/
0 または 1 (オプション) の後に少なくとも 1 桁の数字が続く OR 20