正则表达式可选择接受5个字符

时间:2014-06-19 12:25:10

标签: c# asp.net sql-server regex asp.net-mvc

您好我必须编写一个与A12BC格式匹配的正则表达式。前两个字符是A& 1是强制性的,接下来的3个字符为2B& C是可选的。目前,如果我将字符串值设为A12BC,则我的regEx有效。

当我将输入设为A1B时,它应该不匹配,但我的正则表达式匹配并给出结果为susses。任何人都可以帮助我并修改我的RegExp 它表现如下:

  • 案例“A1”:应该匹配
  • 案例“A1B”:不匹配(此案例不起作用)
  • 案例“A12B”:应该匹配
  • 案例“A12BC”:应该匹配
  • 案例“A12BCD”:不匹配

我的正则表达式如下:

^[a-zA-Z][0-9][0-9]?[a-zA-Z]?[a-zA-Z]?$

2 个答案:

答案 0 :(得分:0)

要确保第三个字符(如果存在)是一个数字,请在可选组中强制使用第三个字符,如下所示:

^[a-zA-Z][0-9]([0-9][a-zA-Z]?[a-zA-Z]?)?$

此表达式表示如果存在第三个字符,则需要匹配一个数字。两个尾随字母也是可选的。

注意:您可以使用预定义的Character Classes \w表示字母,\d表示数字,从而简化表达。请记住,你需要加倍反斜杠才能在" plain"字符串文字(与逐字字符串文字相对,反斜杠不加倍)。

答案 1 :(得分:0)

您可以使用:

^[a-zA-Z][0-9](?:[0-9][a-zA-Z]{0,2})?$

2BC模式中,您必须在允许零,一或两个字母之前强制使用数字。

(?:[0-9][a-zA-Z]{0,2})?匹配空字符串,数字或数字后跟字母,或数字后跟两个字母,但单个字母。

(?:...)是非捕获组,请参阅demo here