正则表达式匹配多个案例

Regex to match multiple cases

我有以下必须与我的正则表达式匹配的示例

1,[]
1,[0,0,0,[]]
1,[0,0,0,0,0,[]]
1,1
1

我想出了一个简单的方法来匹配中间的 .?,\[.*\[\]\] 但它不匹配第一个和最后一个。

也许正则表达式无法处理,但我想检查以下内容:

  1. 如果有',',后面应该有一个或多个字符(数字或字母)
  2. 如果括号打开:它应该关闭'[]'
  3. 里面的括号可以是任何东西,但必须遵守规则 1 和 2。

我正在努力寻找解决方案,如果您能帮助我,我将不胜感激。谢谢。

您可以使用

^\d+(?:,(?:(\[(?:[^][]++|\g<1>)*])|\d+))?$

regex demo详情:

  • ^ - 字符串开头
  • \d+ - 一位或多位数字
  • (?:,(?:(\[(?:[^][]++|\g<1>)*])|\d+))? - 一个可选的序列
    • , - 逗号
    • (?:(\[(?:[^][]++|\g<1>)*])|\d+) - 备选方案之一:
      • (\[(?:[^][]++|\g<1>)*]) - 第 1 组:[,然后 [] 以外的一个或多个字符出现零次或多次,或者第 1 组模式递归
      • | - 或
      • \d+ - 一位或多位数字
  • $ - 字符串结尾。