Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式_Regex_Regex Group - Fatal编程技术网

Regex 正则表达式

Regex 正则表达式,regex,regex-group,Regex,Regex Group,我正在尝试创建以abc开头的正则表达式,然后是空格,然后是不应该以0开头的2位数字,并且应该小于33,然后在括号中应该至少有3个数字以逗号分隔,并在它们之间留有空格。之后,如果是逗号,那么abc后面的正则表达式应该重复 例如: abc23(340223243) abc3(336455344880567)、32(323344464) 我试着这样做: /^abc(\s((?!(0))\d{1,2}[([1-9][0-9]*[,]){2}([1-9][0-9]*[,]*)+[)([,]*)+/g /^

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

例如:

  • abc23(340223243)
  • abc3(336455344880567)、32(323344464)
  • 我试着这样做:

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

  • /^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]*)*)[,])/([1-9][0-9][0-9]*)+)*)///////(/)+)]]]>

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

  • abc 23(323345455),
  • abc 23(323345455),34()

  • 哪些不是必需的。

    以下内容如何:

    ^abc\s(?:(?:[1-9]|[12][0-9]|3[0-3])\(\d+(?:,\s?\d+){2,}\))(?:,\s?(?:(?:[1-9]|[12][0-9]|3[0-3])\(\d+(?:,\s?\d+){2,}\)))*$
    
    根据给定的4个样本进行测试:

    如果要处理匹配的组,请将
    (?:
    替换为

    编辑
    修正了abc后匹配的一位数的问题

    以下内容如何:

    ^abc\s(?:(?:[1-9]|[12][0-9]|3[0-3])\(\d+(?:,\s?\d+){2,}\))(?:,\s?(?:(?:[1-9]|[12][0-9]|3[0-3])\(\d+(?:,\s?\d+){2,}\)))*$
    
    根据给定的4个样本进行测试:

    如果要处理匹配的组,请将
    (?:
    替换为

    编辑
    修正了abc后匹配个位数的问题

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

    ^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多次
    • $
      字符串结尾

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

    ^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多次
    • $
      字符串结尾

    像“数字小于33”这样的东西只能通过变通方法在正则表达式中进行检查(数字12与0-9或数字2与0-3或0-9)。您是否有可能在应用程序中在这个正则表达式之后进行检查?正则表达式最好只检查A和b之间是否有数字,而不是精确的数字。3个数字必须是3位数字?例如“小于33的数字”只能通过变通方法在正则表达式中进行检查(数字12与0-9或数字2与0-3或0-9)。您是否有可能在应用程序中检查此正则表达式之后的数字?理想情况下,正则表达式应该只检查A和b之间是否有数字,而不是精确的数字。3个数字必须是3位数字?这与空格后的单个数字不匹配吗?这与
    abc 4(1,2,3)不匹配
    @Toto完全错过了这个。这与空格后的一位数不匹配吗?这与abc4(1,2,3)不匹配。
    @Toto完全错过了这个。