如何制作正则表达式以匹配逗号分隔列表,列表中最多包含5个项目?

Che*_*hev 2 javascript regex

应该与正则表达式匹配的示例:

  • 绿色,黄色3,12345,你好,世界
  • 蓝色,红色,蓝绿色,橙色
  • 绿色,12345,世界
  • 你好
  • 绿色

我想创建一个与逗号分隔的列表匹配的正则表达式:

  • 该列表可以包含1个,2个,3个,4个或5个项目.
  • 除了每个逗号后面的可选空格外,这些项目不得包含空格.
  • 最后一项不能有逗号.
  • 每个项目必须介于2到30个字符之间.

到目前为止我所做的(不起作用):

/^([a-z0-9]{2,30}, ?)?[a-z0-9]{2, 30}$/i
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 8

试试这个:

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

分手:

/^
   [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 
Run Code Online (Sandbox Code Playgroud)

您甚至可以在更新后的评论之后使用\w,相当于 - 来缩短您的正则表达式[0-9a-zA-Z_],您说您也可以接受_.所以,只需使用:

/^[\w-]{2,30}(, ?[\w-]{2,30}){0,4}$/
Run Code Online (Sandbox Code Playgroud)