检查空格Regex C#

时间:2015-03-18 15:46:31

标签: c# asp.net regex

我创建了一个符合以下规则的正则表达式:

  

必须仅包含大写和数字。不得包含任何其他字符,包括间距字符(\ n,\ t,\ v,\ r,...)。

所以我创建了以下规则:

Regex rule = new Regex(@"^[A-Z0-9\S]+");
  • ^:开始一行/以
  • 开头
  • [A-Z0-9]:包含大写字母或数字
  • [\S]:不包含间距字符
  • +:可能包含一个或多个模式

我添加了一个@字符,可以使用转义字符\S

为了验证它,我创建了一个简单的WebForm,其中包含asp:TextBox和有效的asp:Button,以检查它是否正确:

myFile.aspx

<asp:TextBox runat="server" ID="textBox_1"></asp:TextBox>
<asp:Button runat="server" ID="button_1" Text="Check" OnClick="button_1_Click"/>

然后我绑定了点击以检查规则是否已经过验证:

myFile.aspx.cs

protected void button_1_Click(object sender, EventArgs e)
{

    string textbox = textBox_1.Text;
    Regex rule = new Regex(@"^[A-Z0-9\S]+");            

    if (rule.IsMatch(textbox))
    {
        /* Match */
    }
    else
    {
        /* Doesn't match */
    }            
}

我的问题:

当我输入字符串AA AA时,会检查规则,这不是我想要的。我写错了我的规则吗?

检查规则

  • AA AA无效,因为它包含间距字符
  • aaaa无效,因为它不包含至少大写或数字
  • HELLOWORLD有效,因为它只包含大写
  • HELLO654有效,因为它只包含大写或数字

1 个答案:

答案 0 :(得分:3)

您可能也想在最后锚定正则表达式。此外,您不需要\S部分,因为[A-Z0-9]无论如何都不能包含任何空格字符。

^[A-Z0-9]+$

您当前的正则表达式不会强制匹配发生在字符串的末尾,因此AAA AAA通过。具体来说,第一个AAA次传递和其余字符串不需要满足您的要求。

相关问题