Regex, съответстващ на нежелани специални символи

Може ли някой да ми обясни защо следният регулярен израз

^(?=.*\w)(?=.*[!@#$*_])(?!.*\s).{8,20}$

мач : test*~|-*test

Опитвам се да потвърдя следните правила:

  • Между 8 и 20 знака
  • Поне един специален символ от !@#$*_
  • Освен това, само буквено-цифрови

person user3675875    schedule 26.05.2014    source източник
comment
Добра услуга за обяснение на регулярни изрази: връзка   -  person Oleksii Aza    schedule 26.05.2014


Отговори (1)


Вашият модел изисква

(1) (?=.*\w) поне една дума char

(2) (?=.[!@#$_]) поне един от тези специални знаци

(3) (?!.*\s) без знак за интервал

(4) .{8,20} произволен символ с дължина от 8 до 20

Вашият входен тест*~|-*тест съответства на шаблона

За това, което търсите, бих използвал

^(?=.*[!@#$*_])(?=.*\w)[\w!@#$*_]{8,20}$

(1) (?=.[!@#$_]) поне един специален символ

(2) (?=.*\w) поне една дума char

(3) [\w!@#$*_]{8,20} дума char или специален char, 8 до 20 пъти

person Gregory Adam    schedule 26.05.2014