Регулярные выражения для пароля на основании политики

Я стараюсь санкционировать пароль используя регулярные выражения. Пароль, должно быть, продолжает следующую политику:

  • Минимум 8 символов
  • Максимум 15
  • По крайней мере заглавная буква
  • По крайней мере буква minucula
  • По крайней мере цифра
  • Не место в мишени
  • По крайней мере 1 специальный характер

Я использую это выражение, которой, если оно функционирует, но проблема состоит в том, что он допускает мне место в мишени:

regexp_password = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,15}/;
3
задан 16.02.2016, 22:58
5 ответов

Попытайся со следующей expresiГіn регулярная:

var regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])([A-Za-z\d$@$!%*?&]|[^ ]){8,15}$/;

regex

3
ответ дан 24.11.2019, 14:52
  • 1
    Эта функционирует хорошо – Eduardo Munizaga 17.02.2016, 03:05
  • 2
    Функция и # 243; совершенный – Edgar Conrado 17.02.2016, 16:48
  • 3
    Не было бы добавлять больше специальных символов, оставаться и # 237; в эксперт и # 237;: / ^ (? =.* [a-z]) (? =.* [A-Z]) (? =.*\d) (? =. *[$ $! % *? & #. $ ($) $ - $ _]) [A-Za-z\d $ $! % *? & #. $ ($) $ - $ _] {8,15} $/; – Edgar Conrado 17.02.2016, 20:21
  • 4
    Привет, ты мог говорить мне, с которым программное обеспечение ты создал образ? – Adrian Cid Almaguer 28.02.2017, 19:34

DespuГ©s от нескольких попыток я не смог этого добиваться, так как как они комментируют, это не очень эта страховка mГ©todo. AsГ - что то, что я сделал, одна validaciГіn раньше чтобы обнаруживать, если у него есть algГєn место в мишени

if(/\s/.test($scope.Password)){
    $scope.isValidPassword = false;
    return;
}
2
ответ дан 24.11.2019, 14:52

Проблема, - в котором эта часть regexp

[A-Za-z\d$@$!%*?&]{8,15}

он удовлетворяется 8 символами набора. Или же, после восьмого характера, твой regexp позволяет любую вещь.

То, что нужно делать, состоит в том, чтобы ограничивать ее в конце концов, для того, чтобы он только согласился strings в тех, которых, после 8 в 15 символов набора разрешенных символов, заканчивает string.

TL; DR: нужно добавлять $ в конце концов.

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,15}$/

                                                                    acá ^
2
ответ дан 24.11.2019, 14:52

HabrГ, - которому отказывать в месте в мишени с [^'\s] а следовательно expreciГіn он завершает ее quedarГ - в так:

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,15}[^'\s]/

PruГ©bala здесь

1
ответ дан 24.11.2019, 14:52
  • 1
    Есть какие-то случаи, что, если он допускает место в мишени ASFFAFD5a8ad$ a – jasilva 16.02.2016, 23:41
  • 2
    Верно! из-за которого est и # 225; помещенная в конце концов и habr и # 237; в который они, который быть должный помещать в различные точки для того, чтобы оно функционировало..., правду, это не хороший soluci и # 243; n. Он мне кажется м и # 225; s и #243; ptima та, что показываешь ты. – Eduardo Munizaga 16.02.2016, 23:57

Смоги санкционировать твой regex, и действительно какие-то случаи с местом в белом звуке, стоивший.

Считал, что podrГ-схвати снимать их перед твоим неударом в лунку, и despuГ©s санкционировать с твоим regex.

ты Можешь использовать .replace(/ /g,''), чтобы перемещать место в мишени

Здесь один pequeГ±o jsfiddle

1
ответ дан 24.11.2019, 14:52