2009-12-21 7 views
-1

Ok, так что я, наконец, понял, что мне нужно следующее:буквенно-цифровой, по крайней мере, 1 символ

Таким образом, регулярное выражение должно выполнять:

  1. буквенно-цифровых
  2. по крайней мере, 1 письмо
  3. должно быть от 4 до 8 символов (либо буква/цифра).

т. Е. Буквенно-цифровая строка, которая должна иметь как минимум 1 букву и находиться между 4-8 в длину. (так что это не просто все числа или просто буквы).

Можно ли все это сделать в одном регулярном выражении?

+0

по характеру Я имел в виду письмо, а 4-8 я имел в виду любую альфу. – mrblah

ответ

1

Число 2 и 3, по-видимому, противоречит. Ниже будет соответствовать алфавитно-цифровой между 4 и 8:

/[0-9a-zA-Z]{4,8}/ 
+1

2 не противоречит 3, но является избыточным. –

+0

@ Ник Диксон - зависит от того, что вы понимаете как смысл! – RichardOD

+0

Я разъяснил свой пост выше. – mrblah

0
[a-zA-Z0-9]{4,8} 

первая часть задает буквенно-цифровой, а вторая часть определяет от 4 до 8 символов.

11

Я предполагаю, что вы имеете в виду alphaunumeric, по крайней мере, один письмо и 4 до 8 символов.

Попробуйте это:

(?=.*[a-zA-Z])[a-zA-Z0-9]{4,8} 
  • (?= - мы используем lookahead, поэтому мы можем проверить что-то, не затрагивая остальную часть матча

  • .*[a-zA-Z] - матч за все, за которым следует письмом, то есть проверить, что у нас есть хотя бы одна буква

  • [a-zA-Z0-9]{4,8} - Это будет соответствовать букве или цифре от 4 до 8 раз.

Однако, вы говорите, намерение для «это не может быть просто все номера или просто все буквы», но требования 1, 2 и 3 не сделать это, так как это может быть все письма и отвечать все три требования. Возможно, вы хотите этого, с дополнительным опережающим просмотром, чтобы подтвердить, есть по крайней мере одна цифра:

(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]{4,8} 

Использование a-zA-Z не очень товарищеское, так что вы можете быть лучше использовать код спасай «письмо» если они доступны в вашем вкусе регулярных выражений.

Кроме того, я надеюсь, что это не подходит для приемлемых паролей, так как 4 символа, вероятно, недостаточно длинны.

+0

Вот как я его прочитал. –

+0

**. \ *** => **. + ** – serhio

+0

Это не должно быть. + С тех пор он не будет соответствовать 1aaa, например. –

1
?Regex.IsMatch("sdf", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
false 
?Regex.IsMatch("sdfd", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
true 
?Regex.IsMatch("1234", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
false 

Предупреждение о **. * и .+:

// At least one letter does not match with .* 
?Regex.IsMatch("1111", "(?=.*[a-zA-Z])[a-zA-Z0-9]{4,8}") 
false 

?Regex.IsMatch("1aaa", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
true 
Смежные вопросы