Skip to main content
 首页 » 编程设计

c#之仅字母数字的正则表达式不起作用

2024年02月05日29soundcode

这是我正在尝试的代码:

string MatchNumberPattern = "^[a-zA-Z0-9]*$"; 
 
if (!Regex.IsMatch(cueTextBox9.Text, MatchNumberPattern)) 
{ 
    MessageBox.Show("Enter 8 Space Alphanumeric BT ID only"); 
    cueTextBox9.Text = String.Empty; 
} 
else 
{ 
    do something(); 
} 

它正在接受 aaaaaaaa,但我想要 alpha 和数字的组合,例如 aaaa1234。

请您参考如下方法:

要要求输入中同时出现字母和数字,您需要正向先行:

@"^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]*$" 
    ^^^^^^^^^^^^^^^^^^^^^^^^ 

参见 regex demo

(?=.*[a-zA-Z]) 确保有一个字母并且 (?=.*[0-9]) 使确保输入字符串中有数字。

由于您是从单行文本框中获取输入,因此在前瞻中使用 . 是安全的。作为替代方案,您可以使用 @"^(?=[^a-zA-Z]*[a-zA-Z])(?=[^0-9]*[0-9])[ a-zA-Z0-9]*$"(根据对比原则)。