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

phi*_*hil 22 regex asp.net-mvc

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

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

[0-9]{2}
Run Code Online (Sandbox Code Playgroud)

并从以下示例字符串输入列表中

  • 456
  • 55 44
  • 12

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

  • 45
  • 55
    44
  • 12

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

12
Run Code Online (Sandbox Code Playgroud)

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

[Required]
[RegularExpression("[0-9]{2}")]
public string IssueNumber { get; set; }
Run Code Online (Sandbox Code Playgroud)

我确信我所要求的是非常简单但我无法找到任何限制长度的例子作为匹配的一部分.

提前致谢.

Duk*_*ing 46

您可以使用行指示符的start(^)和end($):

^[0-9]{2}$
Run Code Online (Sandbox Code Playgroud)

某些语言还具有允许您匹配整个字符串的功能,在使用find函数时.匹配整个字符串将使您的正则表达式作为上述替代.上面的正则表达式也可以工作,但是^并且$将是多余的.

  • 根据编程语言,您需要切换^ $的操作模式.(在PHP中有`singleline`和`multiline`模式:`singleline`将强制`^`匹配字符串的START,而'$`匹配结尾.`ultiline`也将接受$ $的换行符` - 这就是你想要的.) (2认同)

Jer*_*rry 11

您需要使用锚点来匹配字符串的开头和字符串^的结尾$

^[0-9]{2}$
Run Code Online (Sandbox Code Playgroud)


Kou*_*Das 6

像这样的东西会起作用

/^\d{2}$/
Run Code Online (Sandbox Code Playgroud)