2016-08-04 2 views
-2

Мне нужно регулярное выражение, имеющее следующие требования.Регулярное выражение в Javascript не работает

1.Minimum 8 символов. 2.уменьшая буква. 3.а наименьшее количество. 4.ай минимум специальный символ.

Я пробовал этот, но не работал для меня.

(?=^.{8,}$)(?=.*\d)(?=.*[[email protected]#$%^&*]+)(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$ 
+0

'(? =. * [A-Z]) (? =. * [A-z])' означает, что вам нужна хотя бы одна верхняя буква и хотя бы одна строчная буква. Объедините два символьных класса только с символом '(? =. * [A-zA-Z])' или используйте флаг без учета регистра 'i'. – Xufox

ответ

1

Вы могли бы использовать это регулярное выражение:

^(?=.{8})(?=.*\d)(?=.*[[email protected]#$%^&*])(?=.*[a-zA-Z]).*$ 

Обратите внимание, что:

  • Для проверки не менее 8 символов, вы можете оставить запятую и $ (оба), так как нет необходимости смотреть дальше, когда найдено 8 символов.

  • Для проверки специальных символов (как и любого другого класса символов) вам не нужно добавлять +: когда оно найдено, условие выполнено.

  • В нижнем регистре и в верхнем регистре не должно быть никаких различий, поэтому эти тесты должны быть объединены.

  • Поскольку у вас нет условий относительно точек или новых линий, этот тест следует удалить ((?![.\n])).

  • Возможно, вы хотите, чтобы каретка была в самом начале, а не в первой группе: вы хотите, чтобы все символы на входе совпадали или ни один.

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