【问题标题】:asp validation for multiple spaces between stringsasp验证字符串之间的多个空格
【发布时间】: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 请您提供答案,以便我将其标记为正确回复以供将来参考。谢谢!

标签: c# asp.net regex validation


【解决方案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+ 个字母、单引号或点字符
  • )* - 零次或多次 (*) 出现
  • $ - 字符串结束

【讨论】:

  • 感谢您的精彩解释。您的描述也将有助于其他人将来理解正则表达式。谢谢!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多