我有一个名称字段的文本框,我已经使用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>
答案 0 :(得分: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+个字母,单引号或点字符)*
- 零次或多次(*
)次发生$
- 字符串结尾