2016-04-07 8 views
1

Gerade jetzt auf einer clientseitigen Passwort Validator ich arbeite, die sicherstellt, dass hat:Ohne ‚+‘ und ‚&‘ Zeichen aus einem regulären Ausdruck

  • 8 Zeichen
  • Ein Großbuchstaben
  • Ein Kleinbuchstaben
  • Eine Nummer

ich jetzt zwei spezielle Zeichen ausschließen müssen, + und &. Ich wusste nicht genau, wo ich diese Regel in meinen aktuellen regulären Ausdruck einfügen sollte. Was wäre der beste Ansatz basierend auf dem, was ich jetzt habe?

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,}$/ 
+0

Warum nicht einfach verwenden eine separate RegEx? Wenn das stimmt, verwenden Sie die RegEx '(?!. *? [+ &]. *?)' – Druzion

+0

Nur neugierig, warum schlagen Sie nicht vor, es in die aktuelle RegEx einzuschließen? Übermäßig wortreich? –

+0

Ich würde vorschlagen, _not_ nicht in eine andere Regex zu trennen. Wie auch immer, wo genau soll man "+" und "&" ausschließen? –

Antwort

1

Da Ihr Beispiel ist Look-Ahead-basiert, macht es Sinn, jetzt fügen Sie einfach einen negativen Look-Ahead-& oder + auszuschließen:

/^(?!.*(\+|&))(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,}$/ 

Demo Here

0

Sie brauchen keine Zeichen auszuschließen + und &. Sie müssen nur erwähnen, was Sie heißt [A-Za-z0-9]

Regex übereinstimmen soll:^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9]{8,}$

Regex101 Demo