Vreau o expresie regulată pentru a verifica:
O parola conține cel puțin opt caractere, inclusiv cel puțin un număr și include atât litere mici și majuscule și caractere speciale, de exemplu#
, ?
, !
.
Ea nu poate fi parola veche sau să conțină numele tău de utilizator, "parola" sau"websitename"
Și aici este meu de validare expresie care este de opt caractere, inclusiv o literă mare, o literă mică, și un număr sau un caracter special.
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
Cum pot scrie pentru parola trebuie să fie de opt caractere, inclusiv o literă mare, un caracter special și caractere alfanumerice?
Minim opt caractere, cel puțin o literă și o cifră:
"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"
Minim opt caractere, cel puțin o literă, un număr și un caracter special:
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$"
Minim opt caractere, cel puțin o literă mare, o literă mică și un număr:
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"
Minim opt caractere, cel puțin o literă mare, o literă mică, un număr și un caracter special:
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"
Minim opt și maxim 10 caractere, cel puțin o literă mare, o literă mică, un număr și un caracter special:
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$"
Puteți folosi această regex cu mai multe lookahead afirmații (condiții):
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$
Acest regex va intareasca aceste reguli:
(?=.*?[A-Z])
(?=.*?[a-z])
(?=.*?[0-9])
(?=.*?[#?!@$%^&*-])
.{8,}
(cu ancore)Expresii regulate don't au o ȘI operator, deci's destul de greu să scrii un regex care se potrivește parole valide, atunci când validitatea este definită de ceva ȘI altceva ȘI altceva...
Dar, expresii regulate au un SAU operator, astfel încât se aplică doar DeMorgan's teorema, și de a scrie un regex care se potrivește invalid parole:
Ceva cu mai mult de opt caractere SAU nimic cu nici numere SAU nimic cu nici majuscule SAU sau ceva cu nr litere mici SAU nimic fără caractere speciale.
Deci:
^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$
Dacă ceva nu se potriveste, atunci's o parolă nevalidă.
Doar o mică îmbunătățire pentru @anubhava's răspuns: Începând cu caracter special sunt limitate la cele de la tastatură, utilizați acest lucru pentru orice caracter special:
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
Acest regex va intareasca aceste reguli:
Am avut unele dificultăți în a urma cel mai popular răspuns pentru situația mea. De exemplu, validarea mea a fost faptul că nu cu personaje, cum ar fi ;
sau [
. Eu nu am fost interesat în alb-listarea mea caractere speciale, așa că în loc de îndatorare [^\w\s]
ca un test - pur și simplu pune - meci non cuvânt de caractere (inclusiv numerice) și non caractere spațiu alb. Pentru a rezuma, aici este ceea ce a lucrat pentru mine...
8
caractere1
caracter numeric1
literă mică 1
majusculă 1
caracter special/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/
[JSFiddle Link][1] - demo simplu acoperă diverse cazuri
O mai "generic" versiune(?), permițând niciunul litere limba engleză ca caractere speciale.
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$
var pwdList = [
'@@V4-\3Z`zTzM{>k',
'12qw!"QW12',
'123qweASD!"#',
'1qA!"#$%&',
'Günther32',
'123456789',
'qweASD123',
'qweqQWEQWEqw',
'12qwAS!'
],
re = /^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$/;
pwdList.forEach(function (pw) {
document.write('<span style="color:'+ (re.test(pw) ? 'green':'red') + '">' + pw + '</span><br/>');
});
Import de fișiere JavaScript jquery.validate.min.js
.
Puteți folosi această metodă:
$.validator.addMethod("pwcheck", function (value) {
return /[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(value) && /[a-z]/.test(value) && /[0-9]/.test(value) && /[A-Z]/.test(value)
});
Incearca asta:
Exprimare:
"/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.]{6, 20}/"
Opțional Caractere Speciale:
Exprimare:
"/^(?=.*\d)(?=.*[a-zA-Z]).{6,20}$/"
Dacă min și max condiție nu este necesară atunci eliminare .{6, 16}
Le-aș răspunde Peter Mortensen, dar eu nu't au suficient de reputație.
Expresiile sale sunt perfecte pentru fiecare din cele specificate cerințele minime. Problema cu expresii care nu't necesită caractere speciale este că ei, de asemenea, don't PERMITE caractere speciale, astfel încât acestea, de asemenea, impune cerințe maxime, care nu't cred că OPERAȚIUNEA solicitată. În mod normal doriți, pentru a permite utilizatorilor să își facă parola la fel de puternic ca vor, de ce restricționează parole puternice?
Deci, lui "minim opt caractere, cel puțin o literă și un număr" expresie:
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
realizează cerința minimă, dar restul de caractere poate numai fi litere și numere. Pentru a permite (dar nu impune) caractere speciale, ar trebui să utilizați ceva de genul:
^(?=.*[A-Za-z])(?=.*\d).{8,}$
pentru a permite orice caractere
sau
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$
pentru a permite anumite caractere speciale
De asemenea, "minim opt caractere, cel puțin o literă mare, o literă mică și un număr:"
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
se întâlnește ca cerință minimă, dar numai vă permite litere și numere. Utilizare:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
pentru a permite orice caractere
sau
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}
pentru a permite anumite caractere speciale.
Nu răspunde direct la întrebare, dar chiar trebuie să fie un regex?
Am folosit pentru a face o mulțime de Perl, și am folosit pentru rezolvarea problemelor cu regexes. Cu toate acestea, atunci când ei a lua mai complicat cu toate uite-te aheads și alte ciudățenii, aveți nevoie pentru a scrie zeci de teste unitare pentru a ucide toate aceste bug-uri mici.
În plus, un regex este de obicei de câteva ori mai lent decât un imperativ sau o soluție funcțională.
De exemplu, următoarele (nu foarte FP) Scala funcția rezolvă întrebarea inițială de aproximativ trei ori mai repede decât regex dintre cele mai populare răspuns. Ceea ce face este, de asemenea, atât de clar încât tu nu't nevoie de o unitate de testare la toate:
def validatePassword(password: String): Boolean = {
if (password.length < 8)
return false
var lower = false
var upper = false
var numbers = false
var special = false
password.foreach { c =>
if (c.isDigit) numbers = true
else if (c.isLower) lower = true
else if (c.isUpper) upper = true
else special = true
}
lower && upper && numbers && special
}
Use the following Regex to satisfy the below conditions:
Conditions: 1] Min 1 uppercase letter.
2] Min 1 lowercase letter.
3] Min 1 special character.
4] Min 1 number.
5] Min 8 characters.
6] Max 30 characters.
Regex: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,30}$/
În funcție de nevoie de dumneavoastră acest model ar trebui să funcționeze bine. Încercați acest lucru,
^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}
Doar a crea un șir de variabile, atribui model, și de a crea un boolean metodă care returnează true dacă modelul este corect, altfel false.
Eșantion:
String pattern = "^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}";
String password_string = "Type the password here"
private boolean isValidPassword(String password_string) {
return password_string.matches(Constants.passwordPattern);
}
@ClasG deja a a sugerat:
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$
dar nu accept _(subliniere) ca un caracter special (de exemplu. Aa12345_).
O variantă îmbunătățită este:
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*([^\w\s]|[_]))\S{8,}$
Am'am găsit multe probleme aici, așa că mi-am făcut singur.
Aici este, în toate ca's glorie, cu teste:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([^a-zA-Z\d\s])).{9,}$
https://regex101.com/r/DCRR65/4/tests
Lucruri pentru a privi afară pentru:
\w
pentru că include _
, pe care am'm de testare pentru.Puteți utiliza de mai jos expresie regulată model pentru a verifica parola dacă se potrivește cu așteptările dumneavoastră sau nu.
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&*()]).{8,20})
Utilizați următoarele Regex pentru a satisface condițiile de mai jos:
Conditions: 1] Min 1 special character.
2] Min 1 number.
3] Min 8 characters or More
Regex:
^(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,}$
Puteți Testa On-line: https://regex101.com
Încercați acest lucru:
^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])[a-zA-Z0-9@#$%^&+=]*$
Această expresie regulată pentru mine functioneaza perfect.
function myFunction() {
var str = "c1TTTTaTTT@";
var patt = new RegExp("^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])[a-zA-Z0-9@#$%^&+=]*$");
var res = patt.test(str);
console.log("Is regular matches:", res);
}
Demo:
function password_check() {
pass = document.getElementById("password").value;
console.log(pass);
regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
if (regex.exec(pass) == null) {
alert('invalid password!')
}
else {
console.log("valid");
}
}
<input type="text" id="password" value="Sample@1">
<input type="button" id="submit" onclick="password_check()" value="submit">