正则表达式只有7或13个仅数字字符

时间:2016-11-17 04:55:27

标签: javascript regex

我目前正在使用正则表达式:/^\d+$/进行仅数字字段验证,但如果可能,我需要使用以下规则对其进行扩展:

只有7个数字字符 OR 13个数字字符

示例:

  • 通过:1234567
  • 通过:1234567890123
  • 失败:12345678
  • 失败:12345678901234
  • 失败:12 @ 45!78901234
  • 失败:12 @ 45!78
  • 失败:123

4 个答案:

答案 0 :(得分:0)

使用limiting repetition pipe('|') symbol更新正则表达式。

/^(?:\d{7}|\d{13})$/

Regex explanation here

答案 1 :(得分:0)

你在哪里遇到解决这个问题的困扰?你说

  

只有7个数字字符或13个数字字符

通常,为了匹配一些内容,我们使用所谓的量词,例如*为零或更多,?为一个或多个,{{ 1}}用于 n ,或{n}用于 n 或更多,{n,}用于 n 和< EM>米

但是,没有一个量词表示&#34;完全 n m 次&#34;。

因此,我们必须使用名为交替的regexp中的概念在您的问题中实现 OR ,并由管道表示(竖线,{{1} })。这在任何beginning regexp tutorial中都有描述。

所以在你的情况下,相关的正则表达式是:

{n,m}

正如其他答案已经提出的那样,这就变成了

|

答案 2 :(得分:-1)

这将有效

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

答案 3 :(得分:-2)

您必须执行/^\d{7}(\d{6})?$/ 6 = 13 - 7

之类的操作

我发现这个解决方案比/^(\d{7}|\d{13})$/更灵活一点,因为它也可以在没有锚点^$的情况下使用,以匹配前7个或前13个数字字符。当您尝试提取类似于您尝试验证的数据时,这可能很有用。

有关详细信息,请参阅this question