正则表达式为7-12位整数

时间:2013-09-19 19:29:56

标签: regex

我今天有另一个问题。我有一个设置为过滤某些数据的电子邮件设备,但它只能通过正则表达式执行此操作。我已经部分完成了thanks to this fine gentleman.我现在需要完成的事情有点复杂。我应该补充一点,我是正则表达式的完全新手。现在我正在使用它:

(?<!\d)(?!1000000)([1-7]\d{6}|8000000)(?!\d)

要查找1000001到8000000范围内的7位整数,我现在要做的是找到1000000到12000000000之间的整数,我可以通过简单地更改此处的部分来重新编写此代码

([1-7]\d{6}

但是根据我的理解,这需要我格式化5个单独的表达式来查找我需要的数据(我可能完全偏离此基础,但我不太了解正则表达式将此行更改为我需要的内容)。我更喜欢一个表达式来查找7-12位数字之间的数据并停在某个明确的12位数值。我怎么能做到这一点?

4 个答案:

答案 0 :(得分:1)

1000000到12000000000(不包括)几乎可以:

1000000至9999999:[1-9][0-9]{6}

10000000至99999999:[1-9][0-9]{7}

100000000至999999999:[1-9][0-9]{8}

1000000000至9999999999:[1-9][0-9]{9}

10000000000至11999999999:1[01][0-9]{9}

某些正则表达式语法变体允许a{m,n}am次获得n,允许前四个组合为一个。完整匹配的完整正则表达式看起来像

[1-9][0-9]{6,9}|1[01][0-9]{9}

然后你可以将其包裹在(?<![0-9])(...)(?![0-9])中以允许搜索部分字符串。

这也与1000000匹配,因此为了排除这一点,您可以使用您已经获得的相同(?!...)构造,但修改为仍然允许1000000后跟其他数字。< / p>

(?<![0-9])((?!1000000(?![0-9]))[1-9][0-9]{6,9}|1[01][0-9]{9})(?![0-9])

顺便说一句,我使用的是[0-9]而不是\d,因为我不知道你正在使用哪种正则表达方言。在某些方言中,\d也匹配其他数字,而不是我们的0123456789。

答案 1 :(得分:0)

随着尘埃落定,我认为这是最简单的“可接受”范围,@ hvd关于使用\d的警告:

\b([1-9]\d{6,9}|1[01]\d{9})\b

这包括1000000并且为了简单起见排除了12000000000。

答案 2 :(得分:0)

我可能会误解你的问题,但不仅仅是

^[1-9][0-9]{6,11}$

答案 3 :(得分:0)

^([1-9][0-9]{6,9}|1[0-2][0-9]{9})$

Regular expression visualization

Debuggex Demo