我创建了一个正则表达式来匹配以下规则:
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/