用于测试非纯空格字符串的正则表达式

Posted

技术标签:

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

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

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

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

【问题讨论】:

5 秒的谷歌搜索有几个答案,包括 ***.com/a/2788151/3279876 @Sami 好吧,我在发帖前用谷歌搜索了几分钟。如果我确实找到了可行的解决方案,我为什么要发布? 您确定解决方案了吗? 【参考方案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 测试。

【讨论】:

你读过这个问题吗?如果文本包含任何空格,您自己的示例将不起作用。

以上是关于用于测试非纯空格字符串的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式只允许单词之间有一个空格

正则表达式用于在不被单引号或双引号包围时使用空格分割字符串

用于模式替换的 Java 正则表达式 - 特殊字符和大小写更改为空格

用于根据空格分隔符拆分文本的正则表达式 [重复]

用于文本框验证的 HTML5 正则表达式模式:仅允许字母、空格和某些字符

用于在所有空格处拆分的正则表达式 Python [重复]