正则表达式验证文本框至少需要两个单词

时间:2014-12-11 15:12:15

标签: asp.net regex visual-studio-2012

我有一个文本框,我需要用正则表达式在文本框中至少两个单词验证它,并且在第一个字符中不包含空格。请给我一个正则表达式来验证我的文本框

目前我正在使用

^((\b[a-zA-Z]{2,40}\b)\s*){2,}$

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
    controltovalidate="TextBox1" validationexpression="^((\b[a-zA-Z]{2,40}\b)\s*){2,}$" 
    errormessage="at least two words"></asp:RegularExpressionValidator>
<asp:Button ID="Button1" OnClick="btnClick" runat="server" Text="Button" />

2 个答案:

答案 0 :(得分:1)

假设它们可以被任何空格字符(空格,制表符等)分隔开来:

^[a-z]+(?:\s[a-z]+)+$

以下是细分:

  • 在字符串^
  • 的开头处断言位置
  • 匹配“a”和“z”[a-z]+之间范围内的单个字符
    • 在一次和无限次之间,尽可能多次+
  • 匹配(?:\s[a-z]+)+下面的正则表达式
    • 在一次和无限次之间,尽可能多次+
    • 匹配单个字符“空白字符”(空格,制表符和换行符)\s
    • 匹配“a”和“z”[a-z]+之间范围内的单个字符
      • 在一次和无限次之间,尽可能多次+
  • 断言字符串末尾的位置(或字符串末尾的换行符之前的位置,如果有的话)$

...但如果他们只用分隔空格:

^[a-z]+(?: [a-z]+)+$

...或者如果分隔符有任何非单词字符:

^[a-z]+(?:\W[a-z]+)+$

这应与RegexOptions.IgnoreCase一起使用。例如(在C#中):

if (Regex.IsMatch(subjectString, @"^[a-z]+(?:\W[a-z]+)+$", RegexOptions.IgnoreCase)) {
    // Successful match
} else {
    // Match attempt failed
} 

答案 1 :(得分:0)

你可能正在寻找这个:

^[a-zA-Z]{2,40}(?: +[a-zA-Z]{2,40})+$

说明

^                       # anchor for the start of the string
[a-zA-Z]{2,40}          # ascii letters
(?:                     # open a non-capturing group
    [ ]+[a-zA-Z]{2,40}  # one or more spaces followed by letters
)+                      # repeat the group one or more times
$                       # anchor for the end of the string

请注意,字边界是无用的。