正则表达式

查哈特

我正在尝试创建以 abc 开头的正则表达式,然后是空格,然后是不应以 0 开头且应小于 33 的 2 位数字,然后在括号中应至少有 3 个数字逗号分隔和它们之间的空格。之后,如果逗号然后 abc 后的正则表达式应该重复。

例如:

  1. abc 23(340, 223, 243)
  2. abc 3(336,455,344,880,567), 32(323,344,464)

我试过这样做:

  1. /^abc(\s((?!(0))\d{1,2}[(]([1-9][0-9]*[,]){2}([1-9][0-9]*[,]*)+[)])([,]*))+/g

  2. /^abc(\s((?!(0))\d{1,2}[(]([1-9][0-9]*[,]){2}(([1-9][0-9]*)[,]*)+[)])(([,]\s((?!(0))\d{1,2}[(]([1-9][0-9]*[,]){2}(([1-9][0-9]*)[,]*)+[)]))*))+/g

这些表达式不包括小于 33 的大小写,并且这些表达式也允许大小写如下:

  1. abc 23(323,345,455),
  2. abc 23(323,345,455), 34()

哪些不是必需的。

第四只鸟

您可以使用重复的非捕获组:

^abc (?:[1-9]|[12][0-9]|3[0-3])\([1-9][0-9]*(?:, ?[1-9][0-9]*){2,}\)(?:, (?:[1-9]|[12][0-9]|3[0-3])\([1-9][0-9]*(?:, ?[1-9][0-9]*){2,}\))*$
  • ^ 字符串的开始
  • abc 匹配 abc 和空格
  • (?: 非捕获组
    • [1-9]|[12][0-9]|3[0-3] 匹配数字 1 - 33
  • ) 关闭群组
  • \( 匹配 (
  • [1-9][0-9]* 匹配数字 1-9 并重复 0+ 数字 0-9
    • (?:, ?[1-9][0-9]*){2,} 匹配逗号、可选空格并重复 2 次或更多次以匹配至少 3 个数字
  • \) 匹配 )
  • (?: 非捕获组
    • , 匹配逗号和空格
    • (?:[1-9]|[12][0-9]|3[0-3])\([1-9][0-9]*(?:, ?[1-9][0-9]*){2,}\) 重复第一个模式
  • )* 关闭组并重复 0+ 次
  • $ 字符串结束

正则表达式演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章