仅 7 位和 9 位的正则表达式

问题描述 投票:0回答:4

我正在搜索仅 7 位数字的正则表达式,另一个仅搜索 9 位数字的正则表达式,我找到的只是 [0-7] 和 [0-9],而不是精确的 7 和 9 位数字 - 不再更短 -

我怎样才能找到这些?

regex
4个回答
48
投票

匹配七位数字:

^\d{7}$

匹配九位数字:

^\d{9}$

如果您想匹配七位或九位数字,请使用以下命令:

^(\d{7}|\d{9})$

或者只是这个:

^\d{7}(\d{2})?$

量词:大括号中的数字就是我们所说的量词,它决定了前面的模式(括号中的字符或组)的重复次数。

字符串(或行)的

Beginningend分别用脱字符号

^
和美元符号
$
表示。

管道字符

|
用于提供两种替代模式。重要的是要知道,它的优先级是最低(感谢raina提醒我),即它将匹配其左侧或右侧的所有内容,除非用括号约束。


3
投票

对于 7 位数字:

/^\d{7}$/

对于 9 位数字:

/^\d{9}$/

Stackoverflow 宕机了,我不得不“学习”正则表达式。

在这里找到它: javascript中的正则表达式

学习更好了:)


0
投票

我认为你不清楚你想从你的帖子中得到什么。您是在寻找 7 位数字还是 9 位数字的字符串?类似于:(\d{9}|\d{14})


0
投票

虽然我在这个帖子上已经很晚了,但我觉得需要另一个答案,因为这里包含的唯一答案假设您正在寻找的数字是他们行中唯一的东西。

但是,如果您的数据在每行上包含更多信息,并且您想要查找所有 7 和/或 9 位数字,那么以下正则表达式将起作用:

(?<![\d])(\d{7}|\d{9})(?![\d])

第一部分

(?<![\d])
是匹配任何数字字符的负向后查找。由于它是负数,因此它排除了在潜在匹配之前包含数字的所有结果。

第二部分

(\d{7}|\d{9})
已在其他答案中进行了解释,但它查找重复7或9次的重复数字字符。

最后一部分

(?![\d])
是匹配任何数字字符的否定前瞻。就像lookbehind一样,由于这个负数,如果它在潜在匹配之后找到一个数字,它将排除它。

虽然这是一个老问题,但希望这个解决方案可以帮助发现该线程具有相同问题的人。

© www.soinside.com 2019 - 2024. All rights reserved.