c# - 检查空格 Regex C#

标签 c# asp.net regex

我创建了一个正则表达式来匹配以下规则:

Must contains only upper case and numbers. Must not contains any other charaters including spacing characters (\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"/>

然后我绑定(bind)了点击来检查规则是否已验证:

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 有效,因为它仅包含大写或数字

最佳答案

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

^[A-Z0-9]+$

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

关于c# - 检查空格 Regex C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29126513/

相关文章:

c# - 在 C# 中使用 XmlReader 读取 Xml

c# - 如何在 C# 中将音频流式传输到扬声器

c# - 识别电子邮件地址是否为 'public'

c# - ASP.NET DefaultButton 和 MasterPages

c# - 无法在生成的 PDF 中正确显示泰米尔语

javascript - RegExp 替换在再次替换时导致错误结果

c# - ASP.NET Web API 的不同返回类型

c# - 5个字符后切换

objective-c - 如何在Objective C(NSRegularExpression)中编写正则表达式?

c# - 如何按顺序匹配正则表达式命名的捕获组