asp验证字符串之间的多个空格

Posted

技术标签:

【中文标题】asp验证字符串之间的多个空格【英文标题】:asp validation for multiple spaces between strings 【发布时间】:2017-10-25 22:43:58 【问题描述】:

我有一个名称字段的文本框,我在其中使用了 asp 验证来获得正确的名称格式。我想验证字符串之间的多个空格。我怎样才能做到这一点? trim() 函数删除了前导空格和尾随空格,但是如何验证字符串之间的多个空格?喜欢

multiple    spaces

no   space

我的验证码::

<label>
    <span>Full name</span>
    <input type="text" id="txt_name" runat="server" required="required"/>      
    <asp:RegularExpressionValidator ID="rev_txt_name" runat="server" ControlToValidate="txt_name" ForeColor="Red" 
    ErrorMessage="Invalid name!" SetFocusOnError="True" ValidationExpression="^[a-zA-Z'.\s]2,50"></asp:RegularExpressionValidator>

</label>

【问题讨论】:

是否需要将整个字符串限制为 50 个字符?你的意思是"one two three" 有效而"one&lt;SPACE&gt;&lt;SPACE&gt;two&lt;SPACE&gt;&lt;SPACE&gt;three" 无效? 是的,但字符数是可选的。谢谢! 好吧,如果它是可选的,你可以使用^[a-zA-Z'.]+(?:\s[a-zA-Z'.]+)*$。如果没有,^(?=.2,50$)[a-zA-Z'.]+(?:\s[a-zA-Z'.]+)*$. 谢谢!如果我还必须使用字符数来验证它怎么办。 @WiktorStribiżew 请您提供答案,以便我将其标记为正确回复以供将来参考。谢谢! 【参考方案1】:

您使用的模式允许匹配字符串中任何位置的空格以及任何连续或不连续出现的空格,因为它是相当通用的字符类的一部分。您需要使用分组并相应地对其进行量化:

^(?=.2,50$)[a-zA-Z'.]+(?:\s[a-zA-Z'.]+)*$

请注意,(?=.2,50$) 前瞻要求整行长度为 2 到 50 个字符。

请参阅regex demo。

详情

^ - 字符串开头 (?=.2,50$) - 正向前瞻,除了换行符之外的任何 2 到 50 个字符直到字符串末尾 [a-zA-Z'.]+ - 1+ 个字母、单引号或点字符 (?: - 非捕获组开始: \s - 1 个空格 [a-zA-Z'.]+ - 1+ 个字母、单引号或点字符 )* - 零次或多次 (*) 出现 $ - 字符串结束

【讨论】:

感谢您的精彩解释。您的描述也将有助于其他人将来理解正则表达式。谢谢!!!

以上是关于asp验证字符串之间的多个空格的主要内容,如果未能解决你的问题,请参考以下文章

编写程序,输入字符串(包含空格),统计其中单词的个数,单词之间以一个或多个空格分隔。

HTML中单词之间的多个空格

ASP MVC 4客户端字符最大验证不显示消息

encodeURIcomponent编码和ASP.NET之间编码转换

在Java [重复]中的多个空格上分割字符串

禁止字符串以空格开头或结尾的 XSD?