Regex 需要正则表达式来匹配1个或多个精确的n位数字

Regex 需要正则表达式来匹配1个或多个精确的n位数字,regex,Regex,我需要一个正则表达式来匹配一系列由一个或多个n位数字组成的数字,用逗号分隔,即: abc12345def返回12345 ABC1234523456DEF返回1234523456 到目前为止,我得到了这个:\d{5}(,\d{5})* 问题是,它在以下情况下也匹配: 123456返回12345,但如果数字大于5,则不需要匹配。所以我需要精确到5位数的数字,如果一个数字短或长,则不匹配 谢谢你的正则表达式使用哪种语言?您想在您的\d{5}周围放置非数字标记;以下是Perl语法(Lukasz提供了一个

我需要一个正则表达式来匹配一系列由一个或多个n位数字组成的数字,用逗号分隔,即:

abc12345def返回12345
ABC1234523456DEF返回1234523456

到目前为止,我得到了这个:
\d{5}(,\d{5})*

问题是,它在以下情况下也匹配:

123456返回12345,但如果数字大于5,则不需要匹配。所以我需要精确到5位数的数字,如果一个数字短或长,则不匹配


谢谢你的正则表达式使用哪种语言?您想在您的
\d{5}
周围放置非数字标记;以下是Perl语法(Lukasz提供了一个否定的前向/后向修复):


实际上我想我明白了

我用向前看和向后看的方法


谢谢。

你可以用这个:

/\D?\d{5}(?:,\d{5})?\D?/
说明:

/   : regex delimiter
\D? : non digit optionnal
\d{5}   : 5 digits
(?: : begining of non-capture group
,\d{5}  : comma and 5 digits
)?  : end of group optionnal
\D? : non digit optionnal
/   : regex delimiter

实际上,我想我找到了!”(?这对我来说很有用,捕获了我没有的“部分匹配”(例如:
abc1234512345123xyz
)@科林·奥戴尔:它不应该匹配那些情况,但我不确定是否指定了。当你根据输入测试它时,我假设你得到的是
1234512345
作为匹配的部分,对吗?可能是逗号需要在前向和后向断言以及数字中。@Jeremiah:看起来不错!我非常喜欢你的so比我的更好:P如果Lukasz也需要捕获,可以通过一个非常简单的添加来完成:
(?(结果:)我实际上是用捕获来测试它,但是没有
?:
*
部分(我只是打印
$1
)。
/   : regex delimiter
\D? : non digit optionnal
\d{5}   : 5 digits
(?: : begining of non-capture group
,\d{5}  : comma and 5 digits
)?  : end of group optionnal
\D? : non digit optionnal
/   : regex delimiter