Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
^(?
`` `
Tu je rozdelenie regexu a ako spĺňa požiadavky:
* `^`:Zhoduje sa so začiatkom reťazca.
* `(? =.* [a-z])`: kladné lookahead - Zaisťuje, že existuje aspoň jedno malé písmeno (`[a-z]`). `.*` Zhoduje sa s akýmkoľvek znakom (okrem novej linky) nula alebo viac krát, takže v podstate hovorí:„Niekde v reťazci musí byť malé písmeno“. LookAhead * nespotrebuje * žiadne znaky; Iba kontroluje stav.
* `(? =.* [A-z])`: kladné lookahead - Zaisťuje, že existuje aspoň jedno veľké písmeno (`[a-z]`).
* `(? =.* \ d)`: kladné lookead - Zaisťuje, že existuje aspoň jedna číslica (`\ d`).
*`(? =.*[!@#$%^&*() _+{} \ [\] :; <>,.? ~ \\/-])`: kladné lookahead - Zaisťuje, že zo zoznamu je aspoň jeden špeciálny znak. Dôležité: Možno budete musieť upraviť znaky vo vnútri štvorcových zátvoriek v závislosti od toho, ktoré znaky považujete za „špeciálne“. Spadnú loválácia `\` sa používa na uniknutie špeciálnych znakov ako `-`,` [`,`] `,`/`,`. "A` \ `, takže sa s nimi zaobchádza doslova. (Dvojitá spätná lomána `\\` je potrebná v mnohých reťazcových literáloch programovacích jazykov, aby ste reprezentovali jedinú spätnú lomu v regexe.) Ak chcete povoliť viac alebo odlišné špeciálne znaky, podľa toho upravte túto časť.
* `. {8,}`:Zhoduje sa s ľubovoľným znakom (okrem novej linky) najmenej 8 -krát. Toto je hlavná časť, ktorá sa zhoduje s skutočnými znakmi hesla, potom, čo LookAheads potvrdil prítomnosť požadovaných prvkov.
* `$`:Zhoduje sa s koncom reťazca. To zaisťuje, že * celý * reťazec sa zhoduje s kritériami.
Vysvetlenie lookaheads:
Kľúčom k tomuto regexu je použitie * pozitívnych vzhľadov * (`(? =...)`). Lookaheads vám umožňujú tvrdiť, že existuje určitý vzor * bez toho, aby skutočne konzumoval * znaky, ktoré zodpovedajú vzoru. Je to rozhodujúce, pretože musíte skontrolovať nezávisle prítomnosť rôznych typov znakov (malé písmená, veľké, číslice, špeciálne) a potom zaistiť, že celková dĺžka je najmenej 8.
Ako ho používať (príklad v Pythone):
`` `Python
importovať
heslo_regex =r "^(? =.*[a-z]) (? =.*[a-z]) (? =.*\ d) (? =.*[!@#$%^&*() _+{} \ [\]:;
def IS_Valid_password (heslo):
return bool (re.match (heslo_regex, heslo))
Heslá =[
"StrongPass1!", # Platný
"slabýpass1", # neplatný (žiadne veľké písmená)
"Slabýpass1", # neplatný (žiadne malé písmená)
"StrongPass", # Invalid (bez číslice, špeciálne)
"Strngp1", # Invalid (príliš krátky)
"StrongPass1", # Invalid (bez špeciálneho)
"StrongPass1", # Invalid (žiadny špeciálny, priestor na konci)
"StrongPass_1", # platný
"StrongPass.1", # platný
"StrongPass, 1", # platný
"StrongPass ~ 1", # platný
"LongervalidPasswordwith1!", # Platný
]
Pre heslo v heslách:
print (f "heslo:{heslo}, platné:{is_Valid_password (heslo)}")
`` `
Dôležité úvahy:
* Zabezpečenie: Tento regex je východiskovým bodom, ale vo všeobecnosti sa spolieha iba na regulárne výrazy pre zabezpečenie hesla. Zvážte použitie zavedených algoritmov hashovania hesla (napríklad Bcrypt, Scrypt alebo Argon2) na bezpečné ukladanie hesiel.
* Špeciálne znaky: `[!@#$%^&*() _+{} \ [\] :; <>,.? ~ \\/-]` Časť definuje, čo považujete za znak „špeciálneho“. Nastavte ho tak, aby zodpovedal požadovanej sade znakov.
* unicode: Ak potrebujete podporovať znaky Unicode (napr. Heslá s akcentovanými písmenami alebo znakmi z iných jazykov), možno budete potrebovať mierne upraviť regex (napr. Používanie tried znakov Unicode, ako napríklad `\ p {ll}` pre malé písmená).
* zložitosť: Veľmi zložité regulárne výrazy môžu byť niekedy neefektívne. Aj keď je tento vo všeobecnosti v poriadku na overenie hesla, nezabudnite na výkon, ak máte čo do činenia s obrovským objemom hesiel.
* Používateľská skúsenosť: Poskytnite používateľom jasné a užitočné chybové správy, keď ich heslo nespĺňa požiadavky. Nehovorte iba „neplatné heslo“; Povedzte im presne, čo chýba.
Toto komplexné vysvetlenie a príklad Python by vám mali poskytnúť solídne pochopenie toho, ako používať tento regex a ako ho prispôsobiť vašim konkrétnym potrebám. Nezabudnite uprednostňovať postupy zaobchádzania s bezpečným heslom.