1

こんばんは、PHPの正規表現を学んでいます。私は1から30と1から10を作ることができていません。1から9については、[1-2-3-4-5-6-7-8-9]または[1-9]{1}と思いました。どちらが正しいですか?前もって感謝します :)

4

3 に答える 3

2

1から9の場合、である単純な正規表現があり[1-9]ます。
1から10、および1から30の場合、ルールの組み合わせが適用されます。
1から10の場合、これを使用できます。

10|[1-9]


1〜30の場合、この正規表現を使用できます。

(30)|([12][0-9])|([1-9])

また

(30)|([12]\d)|([1-9])

the first part 30, would look for exact match i.e. 30.
the second part [12]\d or [12][0-9], would look for numbers between 10 to 29.
the last part [1-9] would look for numbers between 1-9.

于 2013-02-06T12:35:21.303 に答える
1

以下は、0から9までの1桁の有効な正規表現パターンです。

  • [0123456789]
  • [0-9]
  • \d

上記のすべては同等です。

提案されたバージョン[1-2-3-4-5-6-7-8-9]は正しくありません。

1から30までの数値を一致させるには、正規表現は最適なツールではありませんが、正規表現を使用する必要がある場合、最も単純な正規表現は次のようになります。

([012]?\d|30)

ただし、これも一致0するため、実際には0〜30のパターンであることに注意してください。

本当に1〜30が必要な場合は、さらに複雑になります。

([1-9]|[12]\d|30)

数字の1〜30が探している文字列全体である場合は、パターン^の最初と$最後に追加して、1〜30と他の文字を含む文字列を拒否するように固定することを忘れないでください。 。

正規表現は数字を照合するための間違ったツールだと言いましたね。これに正規表現を使用することを避けることができれば、それはあなたにとってはるかに簡単になります。の場合ですif($var >= 1 && $var <= 30)

お役に立てば幸いです。

于 2013-02-06T12:25:53.437 に答える
0

この正規表現を試してください:

30|[12]?\d

先行ゼロなしで1から30までの数値に一致します

于 2013-02-06T12:35:20.397 に答える