我有以下的例子,必须匹配我的正则表达式
1,[]
1,[0,0,0,[]]
1,[0,0,0,0,0,[]]
1,1
1
我想出了一个简单的方法来匹配中间的.?,[.*[]]
,但它不匹配第一个和最后一个。
也许这是太多的处理与regex,但我想检查以下事情:
- 如果有',它应该有一个或多个字符(数字或字母)
- 如果一个括号被打开:它应该关闭'[]'
- 里面的括号可以是任何东西,但必须遵守规则1和2。
我正在寻找一个解决方案,如果你能帮助我,我很感激。谢谢你。
可以使用
^d+(?:,(?:([(?:[^][]++|g<1>)*])|d+))?$
参见regex演示。细节:
^
-字符串 起始d+
-一个或多个数字(?:,(?:([(?:[^][]++|g<1>)*])|d+))?
-一个可选的序列,
- a逗号(?:([(?:[^][]++|g<1>)*])|d+)
-备选方案之一:([(?:[^][]++|g<1>)*])
-第1组:[
,然后零次或多次出现[
和]
以外的一个或多个字符或第1组模式递归|
-或d+
-一个或多个数字
$
-字符串结束