c#正则表达式总是返回错误

时间:2016-04-04 09:20:04

标签: c# regex validation

我的c#项目中有两个正则表达式,另一个表现不同。

Regex RX = new Regex("^[a-zA-Z0-9]{1,20}@[a-zA-Z0-9]{1,20}.[a-zA-Z]{2,3}$");
if (!RX.IsMatch(emailInput.Text))
{
    errorMessage = "Email is invalid!";
}

这个检查电子邮件是否真的是一封电子邮件,我希望用户名相同。我在哪里检查用户名长度和特殊字符。

new Regex(@"^(?=[A-Za-z0-9])(?!.*[._()\[\]-]{2})[A-Za-z0-9._()\[\]-]{3,15}$");
if (!RX.IsMatch(usernameInput.Text))
{
    errorMessage = "Username is invalid!";
}

不知何故,每当我运行我的项目时,它返回的用户名无效,我不明白。我输入的用户名无关紧要,它总是返回errorMessage。

2 个答案:

答案 0 :(得分:2)

您的正则表达式正在运行,但我认为您忘记将RX分配给新的正则表达式。

new Regex(@"^(?=[A-Za-z0-9])(?!.*[._()\[\]-]{2})[A-Za-z0-9._()\[\]-]{3,15}$");

应该是

RX = new Regex(@"^(?=[A-Za-z0-9])(?!.*[._()\[\]-]{2})[A-Za-z0-9._()\[\]-]{3,15}$");

答案 1 :(得分:1)

看来,您根本不想创建 Regex实例,让.Net为您做好准备:

if (!Regex.IsMatch(usernameInput.Text, 
                   @"^(?=[A-Za-z0-9])(?!.*[._()\[\]-]{2})[A-Za-z0-9._()\[\]-]{3,15}$")) {
  errorMessage = "Username is invalid!";
}