/ / regulárny výraz s cieľom vylúčiť určitý reťazec - regex, regex-negation, regex-lookarounds

regulárny výraz na vylúčenie špecifického reťazca - regex, regex-negation, regex-lookarounds

V súčasnosti implementujem riešenie správy totožnosti, ktoré používateľom poskytne možnosť spravovať všetky účty koncových bodov.

V súčasnosti sa pravidlá pre firemné heslo zhodujú s predvolenými požiadavkami na systém Windows: musia obsahovať okrem iného číslo alebo špeciálny znak.

Bohužiaľ, v politike nových systémových hesiel môžeme požadovať číslo, špeciálne alebo obe, ale nie "jedno z nich". Nový systém však umožňuje validáciu pomocou regulárneho výrazu.

V súčasnosti máme túto sadu DISALLOW nasledujúci regex:

.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*

To funguje celkom dobre. Chceme však túto zmenu zmeniť na POVOLENIE buď číslicou, alebo špeciálnou, a zároveň ZRUŠIŤ predchádzajúcu. Tu je to, čo som skúšal:

((?=.*d.*)|(?=.*[-""!#$%&()*+,./:;<=>?@[]^_`{|}~\].*))(?!.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*)

Nemôžem to však do práce. Číslica / špeciálna skupina funguje dobre, avšak skupina slov nie je. Uvidí, či sa na konci reťazca použije "heslo" alebo nejaká variácia, ale nie na začiatku ...

Nejaké návrhy? Systém používa štandardné výrazy (štýl Perl).

odpovede:

0 pre odpoveď č. 1

Prostredníctvom nejakého podvodu je možné kombinovať vaše regexy.

^([^pPd!-""#$%&()*+,./:;<=>?@[]^_`{|}~\]|[pP](?![aA4][sS$]{2}[wW][oO0][rR][dD]))*(d|[-""!#$%&()*+,./:;<=>?@[]^_`{|}~\])([^pPd!-""#$%&()*+,./:;<=>?@[]^_`{|}~\]|[pP](?![aA4][sS$]{2}[wW][oO0][rR][dD]))*$

Snažil som sa to úspešne otestovať v textovom editore Sublime.