用于测试非纯空格字符串的正则表达式
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 正则表达式 - 特殊字符和大小写更改为空格