нужен Regex для проверки буквенно-цифровых символов длиной от 6 до 25 символов - PullRequest
2 голосов
/ 12 сентября 2011

я создал это регулярное выражение для проверки формы пароля feild

"/^[[A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*]{3,25}$/",

он принимает все буквенно-цифровые символы и специальные символы, но только специальные символы недопустимы.

Проблема в том, чтос проверкой длины: (

это должно быть похоже на следующее

Valid: aaaaaaaaa 
Valid: 111111111
Valid: 11111n11111
Valid: nnnn1jkhuig
InValid: @@@@@@@@

, но также выдает ошибку

aaaaaaaaaaaa

Ответы [ 4 ]

4 голосов
/ 12 сентября 2011
^(?=.*[A-Za-z0-9])[A-Za-z0-9, .!@#$%^&*()_]{6,25}$

( Протестировано с PHP ). Объяснение:

  • Строка должна соответствовать [A-Za-z0-9, .!@#$%^&*()_] от 6 до 25 символов
  • Где-то в строке [A-Za-z0-9] должен присутствовать (убедитесь, что строка не состоит из специальных символов только ).
2 голосов
/ 12 сентября 2011

Вы можете использовать положительное утверждение нулевой ширины для решения этой проблемы.Вот регулярное выражение, и я разберу его ниже.

/(?=.*[A-Za-z0-9])[A-Za-z0-9, .!@#$%^&*()_]{3,25}/

Первый компонент - (?=.*[A-Za-z0-9]).Конструкция (?=...) является утверждением нулевой ширины, что означает, что она что-то проверяет, но не «съедает» ничего из вывода.Если часть «...» совпадает, утверждение проходит, а регулярное выражение продолжается.Если оно не совпадает, утверждение не выполняется, и регулярное выражение возвращается как не соответствующее.В этом случае наше «...» есть «. * [A-Za-z0-9]», которое просто говорит «проверьте, чтобы видеть, что там есть буквенно-цифровой символ где-то , мы неcare where ".

Следующий компонент - [A-Za-z0-9, .!@#$%^&*()_]{3,25}, и он просто говорит, что соответствует от 3 до 25 символов из любых допустимых.Мы уже знаем, что по крайней мере один из них является буквенно-цифровым из-за нашего положительного утверждения, так что это достаточно хорошо.

1 голос
/ 12 сентября 2011

Вы не можете вкладывать классы символов, но я думаю, что вы имели в виду

/^([A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*){3,25}$/

Но это также не будет работать, потому что квантификатор {3,25} также не может быть вложенным.

Попробуйте вместо этого

^(?=.{3,25})[A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*$

(?=.{3,25}) - это взгляд в будущее, который просто обеспечивает ваши требования к длине.

0 голосов
/ 12 сентября 2011

Я думаю, что ваше регулярное выражение немного странно, вы заключаете набор в набор.

Это должно быть что-то вроде /^([A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*){3,25}$/ с круглыми скобками для определения числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...