Регулярное выражение JavaScript для пароля - PullRequest
1 голос
/ 21 июня 2010

Я пишу регулярное выражение для проверки пароля в Javascript. Ограничения:

  1. Пароль должен содержать хотя бы один символ верхнего регистра
  2. Пароль должен содержать хотя бы специальный символ

Методом проб и ошибок и небольшого поиска в сети я обнаружил, что это работает:

/(?=.*[A-Z]+)(?=.*[!@#\$%]+)/

Может ли кто-нибудь объяснить, какая часть этого выражения упоминает, что заглавная буква и специальный символ могут иметь любой порядок?

Ответы [ 3 ]

2 голосов
/ 21 июня 2010

?= называется предвидением, где он сканирует остальную часть строки, чтобы увидеть, найдено ли совпадение. Как правило, регулярные выражения идут символ за символом, но ?= говорит ему «смотреть вперед», чтобы посмотреть, существует ли он.

Существует также негативная перспектива ?!.

2 голосов
/ 21 июня 2010

Я думаю, что это будет работать еще лучше:

/(?=.*[A-Z])(?=.*[!@#\$%])/

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

Следующее регулярное выражение (предложенное Гамбо) немного более эффективно, поскольку позволяет избежать ненужного возврата:

/(?=[^A-Z]*[A-Z])(?=[^!@#\$%]*[!@#\$%])/

Вкл.пароли обычной длины, однако разница во времени, вероятно, не будет легко измерима.

1 голос
/ 21 июня 2010

"? =" Делает это. Это «позитивный взгляд»

С Синтаксис регулярного выражения JavaScript

Положительный прогноз соответствует строке поиска в любой точке, где начинается шаблон соответствия строки. Это совпадение без захвата, то есть совпадение не фиксируется для возможного последующего использования. Например, «Windows (? = 95 | 98 | NT | 2000)» соответствует «Windows» в «Windows 2000», но не «Windows» в «Windows 3.1». В предпросмотрах не используются символы, т. Е. После совпадения поиск следующего совпадения начинается сразу после последнего совпадения, а не после символов, составляющих загадку.

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