1

在我的 c# 类中,我正在使用数据注释来装饰一个属性,以验证 5 位数字。该数字的长度必须是最小和最大 5 位数字。但它总是说无效。我的正则表达式有什么问题?

[RegularExpression(@"^\(?([0-9]{5})\)$", ErrorMessageResourceType = typeof (GlobalErrorResource), ErrorMessageResourceName = "QUOTEREQUEST_VALID_ZIP_CODE")]
4

6 回答 6

1

你也可以试试这个表达

"^[0-9]{5,5}$"
于 2013-06-21T06:19:15.147 回答
0

据我了解/ /,在 JavaScript 中使用。

试试这个正则表达式@"^(\d{5})$"

\d如果为[0-9]

{5}如您所知所需的长度。

{1,5}你可以,如果你想指定最小 (1) 和最大 (5) 长度。

于 2013-06-21T06:16:32.440 回答
0

你的正则表达式:

      |-------------- start of group 1
      v        v----- end   of group 1
@"^\(?([0-9]{5})\)$"
  ^^ ^   ^   ^  ^ ^-- end of line
  || |   |   |  |---- literal right parenthesis ")"
  || |   |   |------- match 5 times
  || |   |----------- match characters '0' thru '9'
  || |--------------- non-greedy match (I believe)
  ||----------------- literal left parenthesis  "("
  |------------------ start of line

你真的想要匹配括号,比如 "(12345)" 吗?

于 2013-06-21T06:26:19.177 回答
0

您还可以为此创建自己的属性:

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class ZipAttribute : System.ComponentModel.DataAnnotations.RegularExpressionAttribute
{
    public ZipAttribute() : base("\\A\\b[0-9]{5}(?:-[0-9]{4})?\\b\\z")
    {
        ErrorMessage = "Invalid ZIP code.";
    }
}

要使用它,您需要在您的Global.asax

 DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(ZipAttribute), typeof(RegularExpressionAttributeAdapter));
于 2013-06-21T06:26:25.567 回答
0

将此用于 5 或​​ 9 位数的邮政编码

    [Display(Name = "Zipcode"), RegularExpression("[0-9]{5}(-[0-9]{4})?", ErrorMessage="Zipcode must be in the proper format: '12345' or '12345-6789'")]
于 2015-04-02T12:00:03.267 回答
0

你可以用这个。

[RegularExpression(@"[0-9]{5}")]

当您输入\(时,您表示您必须添加括号来放置邮政编码。

于 2016-06-03T15:37:08.710 回答