Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Regular Expression

  1. #1

    Regular Expression

    Salve a tutti, sto impazzendo a creare un'espressione regolare per controllare che la password soddisfi questi criteri:

    deve essere lunga almeno 8 caratteri, ed appartenere ad almeno 3 delle seguenti 4 categorie:

    Lettere maiuscole dell’alfabeto inglese: A-Z
    Lettere minuscole dell’alfabeto inglese: a-z
    10 cifre di base: 0-9
    Simboli non alfanumerici: ~ ! @ # $ % ^ & * ( ) _ + - = | [ ] \ : " ; ' < > ? , . /

    Mi sto incartando da solo, ogni volta che faccio delle prove non riesco mai a superare i controlli che metto!qualcuno sa aiutarmi??

    grazie in anticipo

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    codice:
    var str         = "0A$a"
    
    var re          = [];
    re['lowercase'] = /[a-z]/;
    re['uppercase'] = /[A-Z]/;
    re['digits']    = /[0-9]/;
    re['alphanum']  = /\W/;
    re['len']      = /^.{8,}$/;
    
    if ((re['lowercase']).test(str)
        && (re['uppercase']).test(str)
        && (re['digits']).test(str)
        && (re['alphanum']).test(str)
        && (re['len']).test(str)) {
        
        alert('ok');
    }
    questo però controlla tutte le condizioni
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    se vuoi impostare unlivello di sicurezza (3 condizioni su 4) potresti fare così


    codice:
    var str         = "0a$A00&c";
    
    
    var re = [];
    re[0] = /[a-z]/
    re[1] = /[A-Z]/
    re[2] = /[0-9]/
    re[3] = /\W/;
    
    var conditions = re.length;
    var securitylevel = 3;
    var passed = 0;
    
    while (conditions--) {
       if ((re[conditions]).test(str)) { ++passed };
    };
    
    if (passed >= securitylevel && str.length > 7) {
        alert('ok');
    }
    else {
        alert('no');
    }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  4. #4
    prima di tutto ti volevo ringraziare per il tempo e la disponibiltà che mi hai dedicato.
    Lo stò testando ...però non ho ben chiaro il significato di
    re[3] = /\W/;

  5. #5
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da andrea_ricci
    prima di tutto ti volevo ringraziare per il tempo e la disponibiltà che mi hai dedicato.
    Lo stò testando ...però non ho ben chiaro il significato di
    re[3] = /\W/;
    è l'equivalente della classe inversa di \w cioè l'inverso di ciò che matcha \w
    quindi ~ ! @ # $ % ^ & * ( ) _ + - = | [ ] \ : " ; ' < > ? , . / più tutti i simboli rimanenti che non hai elencato.

    meglio comunque scrivere per sicurezza

    re[3] = /\W\S/;

    edit:
    solo non ricordo se anche un numero può fare match con questa re
    quindi più semplicemente fai una re che elenca solo i caratteri speciali di cui desideri l'inserimento

    re[3] = /\+\-:\.,; ... /;
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  6. #6
    il trattino basso _ e le parentesi []
    non vanno, come mai?
    per esempio stringa xxxxxx1_ NON è accettata!

  7. #7
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    devi fare l'escape per alcuni caratteri visto che fanno parte della notazione delle regexp

    All characters match themselves except for the following special characters:

    .|*?+(){}[]^$\

    These characters will match themselves when preceded by a \.
    http://www.araxis.com/merge_mac/topi...reference.html

    sempre dallo stesso link

    \w fa match con lettere numeri e underscore
    \W fa match con tutto eccetto lettere numeri e underscore

    se usi \W l'underscore non viene considerato
    quindi dovresti modificare in

    re[3] = /[\W_]/;
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  8. #8
    Ok, perfetto funziona tutto!Grazie 1000

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.