2009-10-30 49 views
111

regular expressionは、小文字と最大10文字しか使用できません。私はこれまでのところ、次のようになります:文字数を10文字に制限する正規表現

pattern: /^[a-z]{0,10}+$/ 

これは機能しません。私はこれをした小文字を可能にする作業を1持っていた:

pattern: /^[a-z]+$/ 

をしかし、私はあなたが出現数を制御するために中括弧を使用することができます10.

+4

でカウント与え、+同じこと(カウント)を行い、このようにそれらは、従ってエラー冗長です。 – PhiLho

+1

/^ [a-z] {0,10} + $ /から '+'を削除する必要があります。それは/^[az] {0,10} $/ –

+1

でなければなりません。いくつかの言語では '^ [az] {0,10} + $'というパターンがコンパイルされていて、Java、Perl(5.10+) 、PHP、Ruby(1.9+)。詳細については、[このページ](http://www.regular-expressions.info/possessive.html)を参照してください。 – Jerry

答えて

247

に文字数を制限する必要があります。例えば、これは、0〜10:

/^[a-z]{0,10}$/ 

オプションは次のとおり

  • {3}ちょうど3つの出現。
  • {6、}少なくとも6回の出現。
  • {2,5} 2〜5回の出現。

regular expression referenceを参照してください。

あなたの式には、中括弧の後に+が付いています。そのため、エラーです。

5

これは、使用しているプログラムによって大きく異なります。異なるプログラム(Emacsvised、およびPerl)では、わずかに異なる正規表現が使用されます。この場合、最初のパターンで最後の "+"を削除する必要があります。

8

/^[a-z]{0,10}$/が有効です。 /^[a-z]{1,10}$/少なくとも1つの文字を一致させる場合は、/^[a-z]+$/のようにします。

7

文字列の最後に欲張り一致を追加すると有益な場合があります。文字列> 10を受け入れることができ、正規表現は最初の10文字まで返されます。 /^[a-z0-9]{0,10}$?/

2
grep '^[0-9]\{1,16\}' | wc -l 

完全に一致するとカウントは{}限界

関連する問題