【问题标题】:data annotation disallowing numbers only strings ASP.NET MVC C#数据注释不允许仅数字字符串 ASP.NET MVC C#
【发布时间】:2015-11-02 15:01:18
【问题描述】:

如何创建只允许包含字母和数字或只有字母的字符串的数据注释。

基本上不允许只有数字的字符串。

现在,我只有一个字母验证,如果字符串中存在字母,我不知道如何也允许数字。

[RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "No numbers allowed in the sequence.")]

谢谢!

编辑 - 找到解决方案!

基本:

[0-9]*[A-z ]+[0-9]*

这个正则表达式几乎完美地工作......

如果用户输入纯数字字符串,它会捕获错误,但是... 如果他添加一个空格,他就可以摆脱字符串。

为了防止出现这个小错误,我只需从控制器中捕获 POST 方法中的任何空格,然后将错误添加到 ModelState。

感谢 @PhillipBetts 提供的 Regex 101 链接,它帮助我解决了这个问题!

【问题讨论】:

    标签: c# string asp.net-mvc-4 numbers data-annotations


    【解决方案1】:

    我认为最简单的方法是将您的正则表达式更改为\D 以表明至少有一个非数字。

    【讨论】:

    • 遗憾的是,这并没有成功。这似乎没有任何价值。
    • @Raspberry 很奇怪 - 它可以在 Regex.Matches 中正常工作 - 你可能想尝试一下。
    • 嗯,我的意思是,只要我输入一个数字,就会出错。
    【解决方案2】:

    有很多资源可以用来测试和学习正则表达式。我最喜欢的Regex 101

    它还有一个库,您可以搜索并找到有用的正则表达式。它还提供了方便的解释。

    无论如何,希望这就是你要找的:

    ^[\w ]+$
    

    【讨论】:

    • 问题是,像1asdfasdf1 这样的字符串应该是有效的。不能用那个。
    • 是的,他只想拒绝只有数字的字符串。同时包含字符和数字的字符串就可以了。
    【解决方案3】:

    你应该用你的正则表达式尝试 String contains 方法

    https://msdn.microsoft.com/de-de/library/dy85x1sa(v=vs.110).aspx

    【讨论】:

    • 嗯,这意味着我必须检查控制器中的值,我正在尝试找到一种方法来获得有效的数据注释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    相关资源
    最近更新 更多