此正则表达式模式将匹配15个连续数字,可选地穿插非数字:
d(?:D?d){14}(?!d)
以下是我的示例数据,显示了四个有效匹配:
Correct matches: #19-04-052-320-008-55,19 04 052 320 008 75,19/04/052/320/0/0/8/8/0, 190405232000895
当多行之间有数字时,就会出现问题。我的正则表达式将匹配下面的多行字符串:
Incorrect match:
12
950,500
345
817,430
67
如何修改当前模式,使其在分布在多行上时不会匹配15个连续数字?
您可以使用以下正则表达式:
bd(?:[^nd]*d){14}(?!d)
RegEx演示
RegEx分解:
b
:匹配单词边界,以便在单独的单词中匹配第一个匹配数字[^nd]*
:匹配0个或多个非数字且非换行符的字符(?:[^nd]*d){14}
:匹配14个数字,可选地穿插0个或多个非数字、非换行符