Regex 正则表达式
我正在尝试创建以abc开头的正则表达式,然后是空格,然后是不应该以0开头的2位数字,并且应该小于33,然后在括号中应该至少有3个数字以逗号分隔,并在它们之间留有空格。之后,如果是逗号,那么abc后面的正则表达式应该重复 例如: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 /^
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]*)+)*)///////(/)+)]]]>
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-33[1-9]|[12][0-9]| 3[0-3]
关闭组)
匹配\(
(
匹配数字1-9并重复0+数字0-9[1-9][0-9]*
匹配逗号、可选空格,并重复2次或更多次,以匹配至少3个数字(?:,?[1-9][0-9]*){2,}
匹配\)
)
非捕获组(?:
匹配逗号和空格,
重复第一个模式(?:[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-33[1-9]|[12][0-9]| 3[0-3]
关闭组)
匹配\(
(
匹配数字1-9并重复0+数字0-9[1-9][0-9]*
匹配逗号、可选空格,并重复2次或更多次,以匹配至少3个数字(?:,?[1-9][0-9]*){2,}
匹配\)
)
非捕获组(?:
匹配逗号和空格,
重复第一个模式(?:[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完全错过了这个。