【问题标题】:DataAnnotations RegularExpression failsDataAnnotations 正则表达式失败
【发布时间】:2014-02-18 16:03:47
【问题描述】:

我有一个具有RegularExpression DataAnnotation 属性的视图模型:

public class CreateProductViewModel
{
    [RegularExpression("[A-Za-z0-9]")]
    public string Name { get; set; }
}

正则表达式应该只验证字母数字字符。

但是,尝试保存“abc”值会导致验证失败。

我也尝试将正则表达式更改为"[^A-Za-z0-9]",但这个也失败了。

我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    在表达式后添加 * 或 +,因为现在它会告诉您该字符串只有在一个字母/数字长时才有效。要使其正常工作,您有两种选择:

    [RegularExpression("[A-Za-z0-9]+")]
    

    或

    [RegularExpression("[A-Za-z0-9]*")]
    

    第一个不允许空字符串,第二个允许空字符串。

    【讨论】:

      【解决方案2】:

      您的原始正则表达式将仅匹配单个字母数字字符。当您在 RegEx 测试器中使用它时,它可能看起来工作正常,因为它会匹配字符串的某些部分。但是,ASP.NET 需要正则表达式来匹配整个输入字符串,从而有效地将 ^ 和 $ 放在 RegEx 周围。如果你想匹配多个字符的输入,你应该在你的正则表达式中添加一个量词,很可能是* 或+,如下所示:

      [RegularExpression("[A-Za-z0-9]*")]
      

      【讨论】:

        猜你喜欢
        • 2018-04-24
        • 2019-11-09
        • 1970-01-01
        • 2018-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-10
        相关资源
        最近更新 更多