正则表达式匹配 2 位数字(以验证信用卡/借记卡发行号码)

问题描述 投票:0回答:4

我想使用正则表达式来匹配恰好包含 2 个字符的字符串,并且这两个字符都必须介于 0 和 9 之间。当 ASP.NET 运行时,要匹配的字符串将来自单行文本输入字段MVC 视图已渲染

到目前为止,我有正则表达式

[0-9]{2}

以及以下示例字符串输入列表

  • 456
  • 55 44
  • 12

当我应用正则表达式时,会返回以下匹配项

  • 45
  • 55
    44
  • 12

所以,我有一半的解决方案......我实际上想要强制执行的是字符串也恰好是 2 个字符长,因此从字符串列表中,唯一应该匹配的是

12

我是正则表达式方面公认的业余爱好者,我只是使用它来验证 ASP.NET MVC 模型上的卡发行编号,如下所示......

[Required]
[RegularExpression("[0-9]{2}")]
public string IssueNumber { get; set; }

我确信我要问的很简单,但我找不到任何限制长度作为匹配一部分的示例。

谢谢,提前。

regex asp.net-mvc
4个回答
77
投票

您可以使用线条指示器的开始 (

^
) 和结束 (
$
):

^[0-9]{2}$

某些语言还具有允许您匹配整个字符串的函数,就像您使用

find
函数一样。匹配整个字符串将使您的正则表达式可以替代上述内容。上面的正则表达式也可以工作,但是
^
$
将是多余的。


15
投票

您需要使用锚点来匹配字符串的开头

^
和字符串的结尾
$

^[0-9]{2}$

14
投票

这样的东西会起作用

/^\d{2}$/

0
投票

当您始终有两位数时,上述解决方案 [0-9]{2} 会匹配,即使表示一位数,例如 01 代表 1。

如果您正在处理从 0 到 12 的普通数字“整数”(表示 12 小时制),则可以使用以下表达式:

r"1[0-2]|[1-9]"
© www.soinside.com 2019 - 2024. All rights reserved.