我需要一个正则表达式来匹配一系列由逗号分隔的一个或多个n位数字,即:
abc12345def返回12345
abc12345,23456def返回12345,23456
到目前为止,我得到了这个:\d{5}(,\d{5})*
问题是它在以下情况下也匹配:
123456返回12345,但如果数字长于5,我需要它不匹配。所以我需要5位数的数字,如果数字更短或更长,那就是不匹配
由于
答案 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