web-dev-qa-db-ja.com

6桁の正規表現

少なくとも1桁と最大6桁を必要とする正規表現が必要です。

私はこれを解決しましたが、どちらも機能していないようです。

^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$

^[0-999999]$

他の提案はありますか?

49
framara

範囲数量詞{min,max}を使用して、次のように最小1桁、最大6桁を指定できます。

^[0-9]{1,6}$

説明:

^     : Start anchor
[0-9] : Character class to match one of the 10 digits
{1,6} : Range quantifier. Minimum 1 repetition and maximum 6.
$     : End anchor

なぜ正規表現が機能しなかったのですか?

あなたはほとんど正規表現に近かった:

^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$

?を前に置いて\をエスケープしたので、?は正規表現のメタ文字として機能しなくなりました(0または1の場合)繰り返し)が、文字通り扱われていた。

修正するには、\を削除するだけです。

rubular で確認してください。

量指定子ベースの正規表現は短く、読みやすく、任意の桁数に簡単に拡張できます。

2番目の正規表現:

^[0-999999]$

と同等です:

^[0-9]$

正確に1桁の文字列に一致します。文字クラス[aaaab][ab]と同じであるため、これらは同等です。

116
codaddict
  ^\d{1,6}$

....................

21
LukeH

試すことができます

^[0-9]{1,6}$

動作するはずです。

11
James

^[0-9]{1,6}$それを行う必要があります。 VB.NETが同じであるかどうかを知るのに十分な知識がありません。

例については、 Wikipedia をご覧ください。

4
eckes