文字数を10に制限する正規表現


189

小文字と最大10文字のみを許可する正規表現を記述しようとしています。これまでのところ、次のようになっています。

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

これは機能しないか、コンパイルされません。私はこれが小文字だけを許可する実用的なものを持っていました:

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

ただし、文字数を10文字に制限する必要があります。


4
{}と+は同じこと(カウント)を行うため、冗長であり、エラーが発生します。
PhiLho

1
/ ^ [az] {0,10} + $ /から「+」を削除する必要があります。/ ^ [az] {0,10} $ /でなければなりません
SOユーザー

1
^[a-z]{0,10}+$一部の言語でパターンがコンパイルされ、注目すべきものはJava、Perl(5.10以降)、PHP、Ruby(1.9以降)です。詳細については、このページを参照してください
Jerry

先読みによるユニバーサルソリューションも参照してください:正規表現での文字長の制限
Vadzim

回答:


356

中括弧を使用して出現回数を制御できます。たとえば、これは0〜10を意味します。

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

オプションは次のとおりです。

  • {3}正確に3回発生。
  • {6、}少なくとも6回発生。
  • {2,5} 2〜5回出現。

参照してください。正規表現のリファレンスを

式の右中括弧の後に+があったため、エラーが発生しました。


私が先頭をOMMITしなければならなかったエンバーとクロムのdevのツールでは^、プロパティが一致することだけのような名前で要求し1234たり5678、と私は$記号含める必要がありました
デヴィンG RHODE

11

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


9

文字列の最後に貪欲なマッチングを追加することは有益かもしれません。そのため、10より大きい文字列を受け入れることができ、正規表現は最初の10文字までしか返しません。 /^[a-z0-9]{0,10}$?/


8

使用しているプログラムに大きく依存します。異なるプログラム(EmacsvisedPerl)は、わずかに異なる正規表現を使用します。この場合、最初のパターンでは、最後の「+」を削除する必要があると思います。


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

制限付きの完全一致数のカウントを提供します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.