2

它可能很简单,但我在这里挣扎......我需要一个正则表达式来表示重复的数字,如果字符串长度为 7 或 9 位,它应该匹配

4

3 回答 3

2

试试(\d{7}|\d{9})。这样你就不会匹配一个八位数的长字符串。

编辑 I:正如 Alex 提出的(见评论)\d{7}(\d{2})?甚至可能表现更好。

编辑二:好的,重新阅读问题,得到问题。\D\d{7}(\d{2})?\D应该这样做。这也不匹配 8 位数字中的 7 位数字。

编辑 III:或使用 M42 建议的单词边界

于 2012-12-04T12:13:22.373 回答
2

怎么样:

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

单词边界确保您只有 7 或 9 位数字

于 2012-12-04T12:20:31.753 回答
1

试试这个。这是针对 C# 的。但它应该适用于其他语言。

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

这是它的工作原理:

| 表示或

{7} 表示匹配 7 次

\d 代表任何数字

于 2012-12-04T12:13:32.287 回答