如何匹配特定长度的数字的正则表达式?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (266)

我希望匹配一个15位数字(作为一个较大的正则字符串的一部分)。现在,我有

\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d

但我觉得一定有更干净的方法。

提问于
用户回答回答于

如果regex语言与Perl兼容:\d{15}

很难说出如何处理边缘(因此您不会意外地获取额外的数字),而不知道将在哪个外部上下文中使用此代码段。明确的上下文无关的解决方案是:

(?:(?<!\d)\d{15}(?!\d))

可以将它放在任何正则表达式的中间,它将匹配(并且只匹配)一个精确15位数的序列。然而,这是相当尴尬的,而且通常是不必要的。假设非字母数字边界(例如,数字周围的空格)的一个简单版本是:

(?:\b\d{15}\b)

但是,如果这些字母紧跟在顺序之前或后面,就行不通了。

在上述两种情况下,外部(?:...)只是一个括号结构,以避免周围正则表达式的优先级问题。是否需要也取决于上下文。

用户回答回答于

通常可以按以下方式进行范围:

\d{4,7}

这意味着最少4位和最大7位数。对于你的特殊情况,你可以使用一个参数变量,\d{15}

这两种形式在Python正则表达式-寻找文本{m,n}在那个环节。

记住\d{15}将匹配行中任何地方的15位数字,包括一个400位数字.。如果要确保它只有15,则使用以下内容:

^\d{15}$

它使用开始和结束锚,或

^\D*\d{15}\D*$

它允许任意的非数字在任何一边。

扫码关注云+社区