【发布时间】:2018-01-29 18:07:23
【问题描述】:
假设我给出一个模式 123* 或 1234* ,我想匹配以该模式开头的任何 10 位数字。它应该正好有 10 位数字。
例子:
模式:123 应该匹配 1234567890 但不匹配 12345678
我尝试了这个正则表达式: (^(123)(\d{0,10}))(?(1)\d{10}).. 显然它不起作用。我试图将模式和剩余数字分组为两个不同的组。它匹配捕获组 (https://regex101.com/) 之后的 10 位数字。如何检查捕获的组是否正好是 10 位数字?或者这里有什么好的诀窍。请指导我。
【问题讨论】:
-
如果您不解释现实生活场景并提供您遇到问题的代码,则很难提供帮助。也许你需要
(?<!\d)123\d{7}(?!\d) -
我试图阻止以特定模式开头的电话号码。用户设置任何阻塞模式,如 123* 或 43* 等。所以我需要阻止与该模式匹配的所有入站和出站。但在挂断电话之前,我需要知道通话失败的原因是因为他们拨了错误的位数或阻塞模式以正确设置消息。 @randomir 的这个正则表达式 \b(?=123)\d{10}\b 似乎已经解决了这个问题。感谢您提供帮助解决该问题的想法。
标签: regex regex-greedy regex-group