2012-08-03 3207 views
11

我的注册技能几乎为零,我试图匹配一个字段有7或9个数字(不在7或9之间,所以8个数字无效)。正则表达式完全匹配7或9位数字

我已经试过(不要笑)

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

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

如果有人可以帮助和解释,将不胜感激答案。

我认为(也许不正确地)那是什么(程序设计)语言我使用

感谢

+0

可能重复[?是否有一个正则表达式量词,上面写着“X或Y重复”(http://stackoverflow.com/questions/11397378/is:你也可以使用快捷\d更换[0-9] - 正则表达式 - 量词 - 说 - 要么x或y重复) – fuxia 2012-08-03 22:13:01

回答

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

\d是现代正则表达式的简写[0-9],使用(?:防止a group capture你不想要或需要的情况发生。

2

七个或九个数字是七个数字任选随后两个数字并不重要:

[0-9]{7}([0-9]{2})? 
+1

你必须锚定表达式。 – 2012-08-03 14:41:16

+1

取决于他们在哪里使用它。例如,不适用于Java的'Pattern.matches()'。 – Joey 2012-08-03 14:42:59

2

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

0

如果你只是删除空格(和optionnaly括号),你的第一个将工作。

1

您的第一种方法有效。只需省略空格,添加$以匹配字符串结尾和尾部斜杠分隔符。

/^(\d{7}|\d{9})$/