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

Regular expression only 7 or 13 numeric only characters

本文关键字:13个 数字字符 正则表达式      更新时间:2023-09-26

我目前使用regex: /^'d+$/只做数字字段验证,但我需要扩展这一点,如果可能的话,使用以下规则:

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

例子:

  • Pass: 1234567
  • : 1234567890123
  • : 12345678
  • : 12345678901234
  • : 12 @45 !78901234
  • : 12 @45 !78
  • : 123

使用pipe('|')符号更新限制重复的正则表达式。

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

这里的正则表达式说明

你在解决这个问题时是在哪里卡住的?你说

仅7个数字字符或13个数字字符

通常,为了匹配某些数量的事物,我们使用所谓的量词,例如*表示零或多个,?表示一个或多个,{n}表示恰好n{n,}表示n或更多,{n,m}表示nm之间。然而,没有单一的量词表示"恰好nm次"。

因此,我们必须在您的问题中使用regexp中称为替代的概念来实现,并由管道(竖条,|)表示。这在任何regexp入门教程中都有描述。

所以在你的情况下,相关的regexp是:

/^(REGEXP-FOR-7-CHARS|REGEXP-FOR-13-CHARS)$/
                     ^  ALTERNATION (PIPE/OR)

正如其他答案所建议的那样,这变成了

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

可以了

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

您必须在6 = 13 - 7

中添加/^'d{7}('d{6})?$/

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