Ma tahan, et regulaaravaldis kontrolliks, et
parool peab olema kaheksa tähemärki, sealhulgas üks suurtäht, üks erimärk ja tähtnumbrilised tähemärgid.
Ja siin on minu valideerimisväljend, mis on kaheksa tähemärki, sealhulgas üks suurtäht, üks väiketäht ja üks number või erimärk.
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
Kuidas ma saan seda kirjutada paroolile, mis peab olema kaheksa tähemärki, sealhulgas üks suurtäht, üks erimärk ja tähtnumbrilised tähemärgid?
Regulaaravaldis, mida te otsite, on tõenäoliselt suur ja õudusunenägu, mida on raske säilitada, eriti inimestele, kes ei ole regulaaravaldistega nii hästi kursis.
Ma arvan, et oleks lihtsam jagada oma regex maha ja teha seda ükshaaval. See võib võtta natuke rohkem aega, kuid ma olen üsna kindel, et selle hooldamine ja silumine oleks lihtsam. See võimaldaks teil ka pakkuda kasutajatele rohkem suunatud veateateid (peale Invalid Password
), mis peaks parandama kasutajakogemust.
Selle põhjal, mida ma näen, olete üsna sujuvalt regex, nii et ma eeldan, et anda teile regulaarseid väljendeid teha, mida te vajate oleks mõttetu.
Nähes teie kommentaari, on see, kuidas ma läheksin selle kohta:
Peab olema kaheksa tähemärki pikk: Selleks ei ole vaja regexi. Omaduse .Length
kasutamine peaks olema piisav.
Sealhulgas üks suurtäht: Võite kasutada regulaaravaldist [A-Z]+
. Kui string sisaldab vähemalt ühte suurtähte, annab see regulaaravaldis tulemuseks true
.
Üks erimärk: Võite kasutada kas \W
, mis vastab igale tähemärgile, mis ei ole täht või number, või võite kasutada midagi sellist nagu [!@#]
, et määrata erimärkide kohandatud loetelu. Pange aga tähele, et sellised märgid nagu $
, ^
, (
ja )
on regulaaravaldiste keeles erimärgid, nii et neid tuleb eskadrillida nii: \$
. Nii et lühidalt öeldes võite kasutada \W
.
Tähtnumbrilised märgid: Kasutades \w+
peaks sobima mis tahes tähe ja numbri ning alajaotusega.
Lisateabe saamiseks vaadake seda õpetust.
( # Start of group
(?=.*\d) # must contain at least one digit
(?=.*[A-Z]) # must contain at least one uppercase character
(?=.*\W) # must contain at least one special symbol
. # match anything with previous condition checking
{8,8} # length is exactly 8 characters
) # End of group
Ühes reas:
((?=.*\d)(?=.*[A-Z])(?=.*\W).{8,8})
Sa pead sobitama kogu sisestusstringi. Seega võid regexi ümbritseda ^
ja $
vahele, et vältida kogemata osaliste kokkulangevuste oletamist kogu sisendiga kokkulangevaks:
^((?=.*\d)(?=.*[A-Z])(?=.*\W).{8,8})$