2013-09-13 4 views
0

Сейчас мне нужно дублировать средство проверки выражения паролей для веб-сайта. Пароль должен содержать только 8-25 символов (только буквы алфавита). Я думал, что это было странно, и использовал это регулярное выражениеСоздание пароля regex

(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,25})

, но это должно быть факультативным, чтобы иметь заглавной буквы, специальные символы и/или цифры на протяжении пароля. Я не очень люблю создавать регулярные выражения, где есть дополнительные символы. Любая помощь будет оценена по достоинству.

Я использую asp.net's RegularExpressionValidator.

+0

Именно этот путь прямо сейчас, что ваша точная проблема? –

+0

Если вы введете просто 'abcdefghijklmnop', это не удастся, и оно должно пройти –

+0

Есть ли еще какие-либо проблемы, которые у вас есть? –

ответ

3

Эта модель должна работать:

^[a-zA-Z]{8,25}$ 

Это соответствует строке, состоящей из 8 до 25 латинских букв.

Если вы хотите, чтобы номер, а также, эта модель должна работать:

^[a-zA-Z0-9]{8,25}$ 

Это соответствует строке, состоящей из 8 до 25 латинских букв или знаков после запятой.

Если вы хотите, чтобы специальные символы, а также, эта модель должна работать:

^[[email protected]!]{8,25}$ 

Это соответствует строке, состоящей из 8 до 25 латинских букв, десятичных цифр или символов, $, @ или ! (конечно, вы можете добавить к этому набору довольно легко).

+0

Как я могу изменить это для специальных chacaters '$, @,!, Ect' –

+0

@Brett Ваш вопрос didn ' t упоминать специальные символы. Что вы пытаетесь сделать точно? – Jerry

+0

@ Джерри, извините, вы правы. Я изменил вопрос. Я просто хочу, чтобы что-то вроде Brett $ 234Stack' для работы –

2

Ваше текущее регулярное выражение не будет работать, потому что оно примет специальные символы от 9-го символа (и что-нибудь после 9-го символа на самом деле, даже 26-го символа, потому что у вас нет конца привязки строки).

Вы, вероятно, хотите что-то вроде этого:

^(?=.*[a-z])[A-Za-z0-9]{8,25}$ 

Это первый убеждается есть строчные (вы упомянули, что в верхнем регистре и цифры не являются обязательными, так что это делает обязательной в нижнем регистре), а затем позволяет только в верхнем регистре и цифры.

EDIT: Для того, чтобы разрешить любые специальные символы, вы можете использовать это:

^(?=.*[a-z]).{8,25}$ 

Мое понимание вашей проблемы является то, что первое требование в пароль, является то, что он должен содержать символы нижнего регистра алфавита. Теперь опция состоит в том, что она также может содержать другие символы. Если это не так, дайте мне знать.

regex101 demo

+0

Я позабочусь о 26+, ограничивая текстовое поле длиной до 25. –

+0

@ Бретт Ahh, ладно, это работает для ограничения персонажа , но регулярное выражение все равно допустило бы 'password @'. – Jerry

+0

@Brett Обновлено регулярное выражение. – Jerry