Ik wil een reguliere expressie om dat te controleren:
Een wachtwoord bevat ten minste acht tekens, waaronder ten minste één cijfer en bevat zowel kleine als hoofdletters en speciale tekens, bijvoorbeeld #
, ?
, !
.
Het mag niet uw oude wachtwoord zijn of uw gebruikersnaam, "password"
of "websitename"
bevatten
En hier is mijn validatie-expressie voor acht tekens, waaronder één hoofdletter, één kleine letter en één cijfer of speciaal teken.
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
Hoe kan ik het schrijven voor een wachtwoord moet acht tekens bevatten, inclusief één hoofdletter, één speciaal teken en alfanumerieke tekens?
Antwoord 1, autoriteit 100%
Minimaal acht tekens, minimaal één letter en één cijfer:
"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"
Minimaal acht tekens, minimaal één letter, één cijfer en één speciaal teken:
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$"
Minimaal acht tekens, minimaal één hoofdletter, één kleine letter en één cijfer:
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"
Minimaal acht tekens, minimaal één hoofdletter, één kleine letter, één cijfer en één speciaal teken:
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"
Minimaal acht en maximaal 10 tekens, minimaal één hoofdletter, één kleine letter, één cijfer en één speciaal teken:
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$"
Antwoord 2, autoriteit 35%
Je mag deze regex gebruiken met meerdere vooruitblikkende beweringen (voorwaarden):
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$
Deze regex zal deze regels afdwingen:
- Minstens één hoofdletter Engelse letter,
(?=.*?[a-z])
- Minstens één kleine Engelse letter,
(?=.*?[a-z])
- Minstens één cijfer,
(?=.*?[0-9])
- Minstens één speciaal teken,
(?=.*?[#?!@$%^&*-])
- Minimaal acht in lengte
.{8,}
(met de ankers)
Antwoord 3, autoriteit 6%
Reguliere expressies hebben geen AND-operator, dus het is vrij moeilijk om een regex te schrijven die overeenkomt met geldige wachtwoorden, wanneer geldigheid wordt gedefinieerd door iets AND iets anders EN iets anders…
Maar reguliere expressies hebben wel een OR-operator, dus pas gewoon de stelling van DeMorgan toe en schrijf een regex die overeenkomt met ongeldige wachtwoorden:
Alles met minder dan acht tekens OFalles zonder cijfers OFalles zonder hoofdletters OFof iets zonder kleine letters OF alles zonder speciale tekens.
Dus:
^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$
Als iets daarmee overeenkomt, is het een ongeldig wachtwoord.
Antwoord 4, autoriteit 2%
Een kleine verbetering voor het antwoord van @anubhava: aangezien speciale tekens beperkt zijn tot die op het toetsenbord, gebruik dit voor elk speciaal teken:
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
Deze regex zal deze regels afdwingen:
- Minstens één Engelse hoofdletter
- Minstens één kleine Engelse letter
- Minstens één cijfer
- Minstens één speciaal teken
- Minimaal acht lang
Antwoord 5, autoriteit 2%
Gebruik de volgende Regex om aan de onderstaande voorwaarden te voldoen:
Voorwaarden:
- Min 1 hoofdletter.
- Min. 1 kleine letter.
- Min 1 speciaal teken.
- Min. 1 nummer.
- Minimaal 8 tekens.
- Max 30 tekens.
Regex:
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,30}$/
Antwoord 6, autoriteit 2%
Ik had wat moeite om het meest populaire antwoord voor mijn omstandigheden te volgen. Mijn validatie mislukte bijvoorbeeld met tekens zoals ;
of [
. Ik was niet geïnteresseerd in het op de witte lijst zetten van mijn speciale tekens, dus gebruikte ik in plaats daarvan [^\w\s]
als een test – simpel gezegd – om niet-woordtekens (inclusief numerieke) en niet-witruimtetekens te matchen . Om samen te vatten, hier is wat voor mij werkte…
- minstens
8
tekens - minstens
1
numeriek teken - minstens
1
kleine letter - minstens
1
hoofdletter - minstens
1
speciaal teken
/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/
JSFiddle Link– eenvoudige demo voor verschillende gevallen
Antwoord 7
Een meer “algemene” versie(?), waarin geen Engelse letters als speciale tekenszijn toegestaan.
^(?=\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/>');
});
Antwoord 8
Ik zou Peter Mortensen willen antwoorden, maar ik heb niet genoeg reputatie.
Zijn uitdrukkingen zijn perfect voor elk van de gespecificeerde minimumvereisten. Het probleem met zijn uitdrukkingen die geen speciale tekens vereisen, is dat ze ook geen speciale tekens TOESTAAN, dus ze dwingen ook maximale vereisten af, wat volgens mij niet door het OP is gevraagd. Normaal gesproken wil je dat je gebruikers hun wachtwoord zo sterk kunnen maken als ze willen; waarom sterke wachtwoorden beperken?
Dus zijn uitdrukking “minimaal acht tekens, ten minste één letter en één cijfer”:
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
voldoet aan de minimumvereiste, maar de overige tekens mogen alleenletters en cijfers zijn. Om speciale tekens toe te staan (maar niet te vereisen), moet je zoiets gebruiken als:
^(?=.*[A-Za-z])(?=.*\d).{8,}$
om alle tekens toe te staan
of
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$
om specifieke speciale tekens toe te staan
Evenzo, “minimaal acht tekens, ten minste één hoofdletter, één kleine letter en één cijfer:”
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
voldoet aan die minimumvereiste, maar alleenstaat letters en cijfers toe. Gebruik:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
om alle tekens toe te staan
of
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}
om specifieke speciale tekens toe te staan.
Antwoord 9
Importeer het JavaScript-bestand jquery.validate.min.js
.
U kunt deze methode gebruiken:
$.validator.addMethod("pwcheck", function (value) {
return /[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(value) && /[a-z]/.test(value) && /[0-9]/.test(value) && /[A-Z]/.test(value)
});
- Ten minste één hoofdletters Engelse letter
- Ten minste één kleine letter
- ten minste één cijfer
- ten minste één speciaal teken
Antwoord 10
Probeer deze:
- minimaal zes tekens
- ten minste één hoofdletters
- ten minste één kleine letters
- ten minste één speciaal teken
expressie:
"/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.]{6, 20}/"
Optionele speciale tekens:
- ten minste één speciaal teken
- ten minste één cijfer
- Speciale tekens zijn optioneel
- minimaal zes tekens en maximaal 16 tekens
expressie:
"/^(?=.*\d)(?=.*[a-zA-Z]).{6,20}$/"
Als de MIN- en MAX-voorwaarde niet vereist is, verwijdert u vervolgens .{6, 16}
- 6 is een minimale tekenlimiet
- 20 is maximale tekenlimiet
- ? = middelen match expressie
Antwoord 11
Hoe zit het met het overwegen van de volgende regexoplossing:
^(?=.*[\w])(?=.*[\W])[\w\W]{8,}$
die het volgende valideert:
- ten minste één kleine letters
- ten minste één hoofdletter
- ten minste één cijfer
- ten minste één speciaal teken
- het zou tenminste 8 tekens lang moeten hebben.
Bekijk het werken op de volgende link https://regex101.com/r/qpmc06/4 /
Antwoord 12
Dit werkte voor mij:
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*?&])([a-zA-Z0-9@$!%*?&]{8,})$
- ten minste 8 tekens lang;
- één kleine letters, één hoofdletters, één nummer en één speciaal teken;
- geen witvakken.
Antwoord 13
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*()_+,.\\\/;':"-]).{8,}$
Antwoord 14
de vraag niet rechtstreeks beantwoorden, maar moet het echt een regex zijn?
Ik droeg veel perl en werd gewend aan het oplossen van problemen met regoxes. Wanneer ze echter gecompliceerder worden met alle kijkbeurten en andere eigenaardigheden, moet u tientallen eenheidstests schrijven om al die kleine bugs te doden.
Bovendien is een regex typisch een paar keer langzamer dan een imperatief of een functionele oplossing.
Bijvoorbeeld, de volgende (niet erg FP) Scala-functie lost de oorspronkelijke vraag ongeveer drie keer sneller op dan de regex van het populairste antwoord. Wat het wel doet is ook zo duidelijk dat u helemaal geen eenheidstest nodig hebt:
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
}
Antwoord 15
/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$/
Dit is de eenvoudige manier om het te gebruiken terwijl je tenminste 1 hoofdletters 1 kleine letters en 1 cijfer
En dit is het voorbeeld terwijl ik gebruik in Express-validatie
check('password')
.notEmpty()
.withMessage('Password cannot be null')
.bail()
.isLength({ min: 6 })
.withMessage('Password must be at least 6 characters')
.bail()
.matches(/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$/)
.withMessage(
'Must have atleast 1 uppercase, 1 lowercase letter and 1 number'
),
Antwoord 16
Volgens uw behoefte moet dit patroon prima werken. Probeer dit,
^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}
Maak gewoon een tekenreeksvariabele, wijs het patroon toe en maak een Booleaanse methode die TRUE reteert als het patroon correct is, anders onwaar.
Sample:
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);
}
Antwoord 17
Ik heb hier veel problemen gevonden, dus ik heb het mijne gemaakt.
Hier is het in al het is glorie, met tests:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([^a-zA-Z\d\s])).{9,}$
https://regex101.com/r/dcrr65/4/tests
Dingen om op te letten:
- Gebruikt niet
\w
omdat dat_
bevat, waar ik op test. - Ik heb veel problemen bij elkaar passende symbolen gehad, zonder het einde van de regel te matchen.
- Geeft geen specifiek symbolen op, dit komt ook omdat verschillende localen verschillende symbolen hebben op hun toetsenborden die ze misschien willen gebruiken.
Antwoord 18
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">
Antwoord 19
deze in 2020 testen:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
Controleer jezelf
const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
const str = `some12*Nuts`;
let m;
if ((m = regex.exec(str)) !== null) {
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Antwoord 20
- Moet minimaal 1 cijfer, 1 hoofdletter, 1 kleine letter en minimaal 8 of meer tekens bevatten:
https://www.w3schools.com/howto/howto_js_password_validation.asp
pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}"
Antwoord 21
var strongRegex = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})");
var mediumRegex = new RegExp("^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})");
Beste voor javascript
Antwoord 22
(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+-]).{6}
Antwoord 23
@ClasG heeft al gesuggereerd:
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$
maar het accepteert geen _(underscore) als een speciaal teken (bijv. Aa12345_).
Een verbeterde is:
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*([^\w\s]|[_]))\S{8,}$
Antwoord 24
Voor standaard wachtwoordvereisten vond ik dit nuttig:
-
Minstens 1 alfabet
-
Minstens 1 cijfer
-
Bevat geen spatie
-
Optionele speciale tekens, bijv. @$!%*#?&^_-
-
Minimaal 8 tekens lang
/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&^_-]{8,}$/
U kunt ook de bovengrens instellen, bijvoorbeeld {8,32} tot 32 tekens lang.
Antwoord 25
Gebruik de volgende Regex om aan de onderstaande voorwaarden te voldoen:
Conditions: 1] Min 1 special character.
2] Min 1 number.
3] Min 8 characters or More
Regex:
^(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,}$
Kan online testen: https://regex101.com
Antwoord 26
We kunnen dit alleen doen door HTML5 te gebruiken.
Gebruik onderstaande code in patroonkenmerk,
pattern="(?=^.{8,}$)((?=.*\d)(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
Het zal perfect werken.
Antwoord 27
U kunt het onderstaande reguliere expressiepatroon gebruiken om te controleren of het wachtwoord aan uw verwachtingen voldoet of niet.
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&*()]).{8,20})
Antwoord 28
(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
Linkcontrole online https://regex101.com/r/mqGurh/1
Antwoord 29
Ik heb zojuist het eerste antwoord hier gekopieerd en er een meer ux-convenient regexvan gemaakt die één bovenste, één onderste en minstens 8 tekens nodig heeft, maar alles “tussenin” accepteert.
Dit is een voorbeeld-regex waarvoor
- minstens 8 tekens lang
- minstens één kleine letter
- minstens één hoofdletter
BELANGRIJK: deze regex zal ook alle andere tekens uitsluiten, b.v. cijfers, speciale tekens zoals $,#,! enz.– zolang de regels 1. tot 3. overeenkomen met de invoerreeks
^(?=.*[a-z])(?=.*[A-Z]).{8,}$
Let op de “.” bijna aan het einde van de regex. Dit komt overeen met bijna elk (en bijna elk leesbaar) teken
Antwoord 30
Gebruik dit,
((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%?=*&]).{8,20})
Het is geldig voor ten minste één kleine letter, één hoofdletter, één cijfer en de speciale tekens van (!,@,#,$,%,?,=,*,&).
Minimale lengte is 8 en maximale lengte is 20