19

我的 reg ex 技能几乎为零,我试图将一个字段匹配为正好有 7 个或 9 个数字(不在 7 或 9 之间,所以没有 8 个数字是无效的)。

我试过了(不要笑)

/^([0-9]{7} | [0-9]{9})

/^([0-9]{7 | 9})

如果有人可以提供帮助并解释将不胜感激的答案。

我假设(可能是错误的)我使用什么(编程)语言并不重要

谢谢

4

6 回答 6

26
/^\d{7}(?:\d{2})?$/

\d是现代正则表达式的简写[0-9],使用(?:可防止发生您不希望或不需要的组捕获。

于 2012-08-03T14:44:14.250 回答
8

您的第一种方法有效。只需省略空格,添加 a$以匹配字符串结尾和尾部斜杠分隔符。您也可以[0-9]用快捷方式替换\d

/^(\d{7}|\d{9})$/
于 2012-08-03T14:47:49.440 回答
5

七位或九位数字是七位数字,可选地后跟两位数字:

[0-9]{7}([0-9]{2})?
于 2012-08-03T14:40:46.860 回答
3

使用这个正则表达式^\d{7}(\d{2})?$

于 2012-08-03T14:41:34.080 回答
0

这在您使用的编程语言中可能更容易完成,但也可以在正则表达式中实现。看看这个链接:正则表达式将字符数限制为 10

于 2012-08-03T14:42:47.590 回答
0

如果您只删除空格(以及可选的括号),您的第一个将起作用。

于 2012-08-03T14:43:03.813 回答