数据注解失败

本文关键字:失败 数据 | 更新日期: 2023-09-27 18:19:14

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

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

数据注解失败

你也可以试试这个表达式

"^[0-9]{5,5}$"

根据我的理解,/ /在JavaScript中使用。

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

' d 如果 [0 - 9]

{5}作为你所知道的长度。

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

你的正则表达式:

      |-------------- 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)"div ?

你也可以创建自己的属性:

[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));

对于5位或9位的邮政编码

    [Display(Name = "Zipcode"), RegularExpression("[0-9]{5}(-[0-9]{4})?", ErrorMessage="Zipcode must be in the proper format: '12345' or '12345-6789'")]

你可以使用这个

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

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