需要正则表达式匹配1个或更多正好n位数字

时间:2011-02-18 17:53:27

标签: regex

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

abc12345def返回12345
abc12345,23456def返回12345,23456

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

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

123456返回12345,但如果数字长于5,我需要它不匹配。所以我需要5位数的数字,如果数字更短或更长,那就是不匹配

由于

3 个答案:

答案 0 :(得分:5)

您使用的是哪种语言的正则表达式?你想在你的\d{5}周围放置非数字标记;这是Perl语法(由Lukasz提供负面前瞻/后视修复):

(?<![\d,])\d{5}(,\d{5})*(?![\d,])

答案 1 :(得分:3)

其实我觉得我懂了! (?<!\d)\d{5}(?!\d)(,(?<!\d)\d{5}(?!\d))*

我使用了前瞻和后视

感谢。

答案 2 :(得分:0)

你可以使用这个:

/\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