2

正規表現に一致する必要がある例:

  • 緑、黄-3、12345、こんにちは、世界
  • ブルー、レッド、ティール、オレンジ
  • 緑、12345、世界
  • こんにちは

コンマ区切りのリストを次のルールに一致させる正規表現を作成したいと考えています。

  • リストには、1、2、3、4、または 5 つのアイテムを含めることができます。
  • 各コンマの後のオプションのスペースを除いて、項目に空白を含めることはできません。
  • 最後の項目には、末尾のコンマがあってはなりません。
  • 各項目は 2 ~ 30 文字にする必要があります。

私がこれまでに持っているもの(動作しません):

/^([a-z0-9]{2,30}, ?)?[a-z0-9]{2, 30}$/i
4

3 に答える 3

8

これを試してください:

/^[a-z0-9-]{2,30}(,\s?[a-z0-9-]{2,30}){0,4}$/i

別れる:

/^
   [a-z0-9-]{2,30}   # One item for sure
   (                 # A capture group. You can make it non-capture if not required
      ,\s?              # Comma followed by optional space
      [a-z0-9-]{2,30}   # Another item
   ){0,4}            # 0 to 4 repetition.
$/ix 

を使用して正規表現を短縮することもできます\w。これは - と同等で[0-9a-zA-Z_]、更新されたコメントの後に、受け入れることもできると言ってい_ました。したがって、これを使用してください:

/^[\w-]{2,30}(, ?[\w-]{2,30}){0,4}$/
于 2013-09-30T19:15:49.603 に答える
4

このようなものが動作するはずです:

/^([a-z0-9-]{2,30}, ?){0,4}[a-z0-9-]{2,30}$/i

これは、2 ~ 30 個のラテン文字または 10 進数またはハイフンに一致し、その後にコンマとオプションのスペースが続き、すべて 0 ~ 4 回繰り返され、その後に 2 ~ 30 個のラテン文字または 10 進数またはハイフンが続きます。

ここでテストできます。

于 2013-09-30T19:15:42.593 に答える
1
/^[^,]{2,30}(, ?[^,]{2,30}){0,4}$/

[^,]許可された文字を指定しなかったため、使用されているため、コンマのみが許可されていないと想定しています。[a-zA-Z0-9_-]もちろん、その文字クラスに対して、\w、またはその他の制限を使用できます。

于 2013-09-30T19:18:55.320 に答える