【问题标题】:Regex for testing non-whitespace-only string用于测试非纯空格字符串的正则表达式
【发布时间】:2016-05-26 12:20:10
【问题描述】:

我的视图模型中的某些字符串具有Required 属性,但是如果用户在文本区域中键入(是的,空格),则无法捕获。我需要阻止用户提交纯空格字符串。

我正在尝试在我的视图模型的属性上使用RegularExpression 属性来验证字符串。我已经看到了一些答案,例如Filtering "whitespace-only" strings in JavaScriptHow to validate whitespaces using jquery/ajax in an MVC view,但它们似乎无法正常工作(是的,在你问之前,如果我将它从 Javscript 带到C#)。这些问题的答案中的示例通常仅针对空格或根本没有空格进行验证。我需要的是我至少需要 some 文本来验证。只要我也有一些非空白字符串,有一些空白就没有问题。

我应该在我的属性中使用什么正则表达式(我不擅长正则表达式)来验证一些包含至少一些非空白文本的文本?

【问题讨论】:

  • 5 秒的谷歌搜索有几个答案,包括 stackoverflow.com/a/2788151/3279876
  • @Sami 好吧,我在发帖前用谷歌搜索了几分钟。如果我确实找到了可行的解决方案,我为什么要发布?
  • 您确定解决方案了吗?

标签: c# regex asp.net-mvc


【解决方案1】:

所需的正则表达式是^(.*\S.*)$。如果有另一个“真实”字符,这将允许空格。

在一个属性中它看起来像。

//using System.ComponentModel.DataAnnotations;

[Required, RegularExpression(@"^(.*\S.*)$")]
public string Name { get; set; }

我尝试先添加Required(AllowEmptyStrings = false),但没有成功,但这就是微软所说的。它对我不起作用,但上面的正则表达式起作用。

【讨论】:

    【解决方案2】:

    您可以将这些数据注释添加到您的字符串中:

        [Display(Name = "Email")]
        [Required(ErrorMessage = "Please enter email address !", AllowEmptyStrings = false)]
        public string Email { get; set; }
    

    AllowEmptyStrings = false 部分会阻止您保存空字符串(如空格)

    【讨论】:

    • 它不起作用。添加它,输入一些空格,然后验证它不应该的地方。
    • 然后[RegularExpression(@"^[^\s\,]+$", ErrorMessage = "Email Can't Have Spaces")]
    【解决方案3】:

    正则表达式^\s+$ 匹配只包含空格的字符串。

    正则表达式\S 匹配包含一些非空格的字符串。

    【讨论】:

    • \S,当与RegularExpression 属性一起使用时,不允许包含空格的字符串,即使它包含非空格字符。
    • 您要求匹配“仅空白”的正则表达式。呵呵。
    【解决方案4】:

    试试这个表达式:^\S+$

    http://regexr.com/3cq34 测试。

    【讨论】:

    • 你读过这个问题吗?如果文本包含任何空格,您自己的示例将不起作用。
    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2021-11-30
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    相关资源
    最近更新 更多