12

ユーザーに0〜20の範囲の数字を入力させたいのですが、01と1の両方を入力できます

これは私がこれまでに持っているものです

 /^[1-9]|0[1-9]|1[0-9]|2[0]$/

しかし、うまくいきません。

4

3 に答える 3

16

問題は、 の優先順位が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。)

于 2012-08-29T17:30:21.247 に答える
9

どうですか

/^([0-1]?[0-9]|20)$/

問題は、20 が特殊なケースであることです。2 番目のセクションで説明します。最初のセクションは残りをカバーします。コンテキストを指定しなかったため、perl スタイルの正規表現を想定しています。

于 2012-08-29T17:28:30.017 に答える
4

これを試して

/^([01]?\d|20)$/

0 または 1 (オプション) の後に少なくとも 1 桁の数字が続く OR 20

于 2012-08-29T17:19:24.453 に答える