我创建了一个符合以下规则的正则表达式:
必须仅包含大写和数字。不得包含任何其他字符,包括间距字符(\ 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
有效,因为它只包含大写或数字答案 0 :(得分:3)
您可能也想在最后锚定正则表达式。此外,您不需要\S
部分,因为[A-Z0-9]
无论如何都不能包含任何空格字符。
^[A-Z0-9]+$
您当前的正则表达式不会强制匹配发生在字符串的末尾,因此AAA AAA
通过。具体来说,第一个AAA
次传递和其余字符串不需要满足您的要求。