Regex не распознает подчеркивание (_) как специальный символ - PullRequest
0 голосов
/ 23 апреля 2019

Мои требования к Regex

  • Включает 1 заглавную букву
  • Включает 1 строчную букву
  • Включает 1 цифру
  • Включает 1 специальный символ
(/^(?=^.{8,40}$)(?=.*\d)(?=.*\W+)(?=.*[a-z])(?=.*[A-Z])(?!^.*\n).*$/)

Однако, если я введу 1234ABcd_, проверка завершится неудачно, только _, кажется, не распознается как специальные символы. Какие-нибудь решения по моему регулярному выражению? Спасибо!

1 Ответ

4 голосов
/ 23 апреля 2019

Похоже, вы используете (?=.*\W+) для соответствия специальным символам. Но _ - это символ слова, который находится в \w, а \W - это все остальное, так что это не соответствует _. Измените его на: (?=.*[\W_]+)

Кроме того, вам не нужно + в этом. Вам нужно только соответствовать 1, чтобы добиться успеха.

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