正则表达式匹配多个案例
Regex to match multiple cases
我有以下必须与我的正则表达式匹配的示例
1,[]
1,[0,0,0,[]]
1,[0,0,0,0,0,[]]
1,1
1
我想出了一个简单的方法来匹配中间的 .?,\[.*\[\]\]
但它不匹配第一个和最后一个。
也许正则表达式无法处理,但我想检查以下内容:
- 如果有',',后面应该有一个或多个字符(数字或字母)
- 如果括号打开:它应该关闭'[]'
- 里面的括号可以是任何东西,但必须遵守规则 1 和 2。
我正在努力寻找解决方案,如果您能帮助我,我将不胜感激。谢谢。
您可以使用
^\d+(?:,(?:(\[(?:[^][]++|\g<1>)*])|\d+))?$
见regex demo。 详情:
^
- 字符串开头
\d+
- 一位或多位数字
(?:,(?:(\[(?:[^][]++|\g<1>)*])|\d+))?
- 一个可选的序列
,
- 逗号
(?:(\[(?:[^][]++|\g<1>)*])|\d+)
- 备选方案之一:
(\[(?:[^][]++|\g<1>)*])
- 第 1 组:[
,然后 [
和 ]
以外的一个或多个字符出现零次或多次,或者第 1 组模式递归
|
- 或
\d+
- 一位或多位数字
$
- 字符串结尾。
我有以下必须与我的正则表达式匹配的示例
1,[]
1,[0,0,0,[]]
1,[0,0,0,0,0,[]]
1,1
1
我想出了一个简单的方法来匹配中间的 .?,\[.*\[\]\]
但它不匹配第一个和最后一个。
也许正则表达式无法处理,但我想检查以下内容:
- 如果有',',后面应该有一个或多个字符(数字或字母)
- 如果括号打开:它应该关闭'[]'
- 里面的括号可以是任何东西,但必须遵守规则 1 和 2。
我正在努力寻找解决方案,如果您能帮助我,我将不胜感激。谢谢。
您可以使用
^\d+(?:,(?:(\[(?:[^][]++|\g<1>)*])|\d+))?$
见regex demo。 详情:
^
- 字符串开头\d+
- 一位或多位数字(?:,(?:(\[(?:[^][]++|\g<1>)*])|\d+))?
- 一个可选的序列,
- 逗号(?:(\[(?:[^][]++|\g<1>)*])|\d+)
- 备选方案之一:(\[(?:[^][]++|\g<1>)*])
- 第 1 组:[
,然后[
和]
以外的一个或多个字符出现零次或多次,或者第 1 组模式递归|
- 或\d+
- 一位或多位数字
$
- 字符串结尾。