2016-04-04 2 views
0

У меня есть два регулярных выражения в моем проекте C#, один работает, другой не делает.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.

+3

Некоторые образцы будут будь красивой. – npinti

+0

[пользовательское регулярное выражение работает] (http://ideone.com/x6LMbG). –

+0

Вы назначили 'new Regex'' RX'? –

ответ

1

кажется, что вы не хотите созданияRegex экземпляр вообще, пусть .Net сделает это за вас:

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

Ах, спасибо, глупая ошибка! –

Смежные вопросы