正则表达式验证器,用于以1开头的八位长数字

时间:2012-05-30 13:10:35

标签: regex asp.net-mvc-3 data-annotations

我知道我可以使用[Required][StringLength]注释来验证空字符串和长度要求,但是也希望使用相同的正则表达式来验证它们。我没有尝试,因为我对正则表达式不是很好。

正则表达式应验证

1.Empty string(不应该被允许)

2.字符长度(8)

3.Integer

4.开始编号(应为1)

以下是代码:

 [DisplayName("Account Number:")]
 [RegularExpression("", 
             ErrorMessage = "An eight digit long number starting with 1 required")]
 public string accountNo { get; set; }

提前致谢!

3 个答案:

答案 0 :(得分:6)

使用此正则表达式^1\d{7}$

^1[0-9]{7}$

或者,在紧急情况下,

  ^1[0-9][0-9][0-9][0-9][0-9][0-9][0-9]$

示例代码:

using System.Text.RegularExpressions;
 Regex RegexObj = new Regex(@"^1\d{7}$");
 bool  result=   RegexObj.IsMatch("" );

- 结果有错误值

如果您不想允许空字符串,请在字段上放置以下属性。

[Required(AllowEmptyStrings = false)]

答案 1 :(得分:3)

Per the documentation on MSDN,空字符串总是传递正则表达式验证器,如果要确保它们输入了某些内容,则应使用必需属性。或者,您可以从正则表达式派生自己的自定义数据注释属性,并自己处理空条件。

答案 2 :(得分:0)

要确保空字符串有效,请添加[Required]属性,AllowEmptyStrings设置为true。这可以防止分配null,但允许空字符串。

至于正则表达式,Romil的表达式应该可以正常工作。

[DisplayName("Account Number:")]
[Required(AllowEmptyStrings = true)]
[RegularExpression(@"^1\d{7}$", 
         ErrorMessage = "An eight digit long number starting with 1 required")]
public string accountNo { get; set; }

编辑如果您还想阻止空字符串验证,只需省略AllowEmptyStrings设置(默认为false )。

[DisplayName("Account Number:")]
[Required]
[RegularExpression(@"^1\d{7}$", 
         ErrorMessage = "An eight digit long number starting with 1 required")]
public string accountNo { get; set; }