Regular Expression

domenica 22 luglio 2007 - 16.39

nullatore Profilo | Junior Member

Sapete dirmi qual'e' l'espressione regolare per validare una stringa che deve essere almeno di 7 caratteri di cui uno almeno non alfanumerico

Grazie

RobNet Profilo | Newbie

Prova con questo [a-zA-z]{6,}[0-9]{1,}
La corrispondenza in questo caso è valida per qualsiasi posizione all' interno della stringa su cui effettui il controllo.

Ciao!

Brainkiller Profilo | Guru

>Prova con questo [a-zA-z]{6,}[0-9]{1,}
>La corrispondenza in questo caso è valida per qualsiasi posizione
>all' interno della stringa su cui effettui il controllo.

Ciao,
sicuro che è giusta ? Nullatore ha chiesto almeno un carattere non alfanumerico (quindi che non sia nè numero nè lettera) tu hai specificato un carattere numerico.

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

RobNet Profilo | Newbie

Ooops...avevo letto male....
Grazie mille David!
Mi correggo e faccio ammenda sperando che questa volta vada bene: [a-zA-z0-9]{6,}[^ a-zA-z0-9]{1,}

Brainkiller Profilo | Guru

>Ooops...avevo letto male....
>Grazie mille David!
>Mi correggo e faccio ammenda sperando che questa volta vada
>bene: [a-zA-z0-9]{6,}[^ a-zA-z0-9]{1,}

Ciao!
Questa dovrebbe essere corretta, l'avevo pensata anche io ma mi sono chiesto, così come è scritta il carattere non alfanumerico si può mettere solo a fine stringa, se è a metà stringa non valida. Aspettiamo notizie da nullatore se gli va bene o meno.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

ghio Profilo | Newbie

>>Ooops...avevo letto male....
>>Grazie mille David!
>>Mi correggo e faccio ammenda sperando che questa volta vada
>>bene: [a-zA-z0-9]{6,}[^ a-zA-z0-9]{1,}
>
>Ciao!
>Questa dovrebbe essere corretta, l'avevo pensata anche io ma
>mi sono chiesto, così come è scritta il carattere non alfanumerico
>si può mettere solo a fine stringa, se è a metà stringa non valida.
>Aspettiamo notizie da nullatore se gli va bene o meno.
>Ciao
>
>David De Giacomi | Microsoft MVP
>http://blogs.dotnethell.it/david/
se non ricordo male puoi anche sostituire [^ a-zA-z0-9] com \W che indica qualsiasi carattere non alfanumerico e [a-zA-z0-9] con \w che rappresenta invece qualsiasi carattere alfanumerico e solo per legibilità {1,} con il +.Solo che ho alcuni dubbi sul funzionamento, infatti, questa regex credo che non valga bene se inserisco una stringa con 5 carattteri alfanumerici e 2 non alfanumerici. Io se fossi in te separerei i problemi in 2, mispiego: tu vuoi validare una stringa che sia di almeno 7 caratteri e che contenga almeno un carattere non alfanumerico. puoi fare smplicemente un check della lunghezza sulla stringa per controllare la prima condizione ed un semplice \W+ o [^ a-zA-z0-9]{1,} percontrollare che la stringa contenga almenu un carattere non alfanumerico. Spero di essere stato chiaro, ciao, M

nullatore Profilo | Junior Member

>Questa dovrebbe essere corretta, l'avevo pensata anche io ma
>mi sono chiesto, così come è scritta il carattere non alfanumerico
>si può mettere solo a fine stringa, se è a metà stringa non valida.
>Aspettiamo notizie da nullatore se gli va bene o meno.
>Ciao
>
>David De Giacomi | Microsoft MVP
>http://blogs.dotnethell.it/david/

Grazie ragazzi per l'attenzione.
Come hai immaginato il carattere non-alfanumerico si puo' trovare in qualsiasi posizione della stringa (devo validare delle password)...

nullatore Profilo | Junior Member

>se non ricordo male puoi anche sostituire [^ a-zA-z0-9] com \W
>che indica qualsiasi carattere non alfanumerico e [a-zA-z0-9]
>con \w che rappresenta invece qualsiasi carattere alfanumerico
>e solo per legibilità {1,} con il +.Solo che ho alcuni dubbi
>sul funzionamento, infatti, questa regex credo che non valga
>bene se inserisco una stringa con 5 carattteri alfanumerici
>e 2 non alfanumerici. Io se fossi in te separerei i problemi
>in 2, mispiego: tu vuoi validare una stringa che sia di almeno
>7 caratteri e che contenga almeno un carattere non alfanumerico.
>puoi fare smplicemente un check della lunghezza sulla stringa
>per controllare la prima condizione ed un semplice \W+ o [^ a-zA-z0-9]{1,}
>percontrollare che la stringa contenga almenu un carattere non
>alfanumerico. Spero di essere stato chiaro, ciao, M

Anche la tua idea è giusta....ma è implementabile con una regular expression?

Fatemi fare un piccolo quadro della situazione.
Devo validare l'inserimento di una password con le caratteristiche che ho descritto all'inizio del post.
Ho pensato di utilizzare un RegularExpressionValidator per potermi impratichire con le espressioni regolari (e per contenere il codice).
Nel tuo caso (forse) dovrei utilizzare un CustomValidator...ma in quel caso il controllo l'ho faccio da codice sfruttando tutta l'espressività del linguaggio di programmazione in uso (nel mio caso c#)...ma cio è facile

ghio Profilo | Newbie

>>se non ricordo male puoi anche sostituire [^ a-zA-z0-9] com \W
>>che indica qualsiasi carattere non alfanumerico e [a-zA-z0-9]
>>con \w che rappresenta invece qualsiasi carattere alfanumerico
>>e solo per legibilità {1,} con il +.Solo che ho alcuni dubbi
>>sul funzionamento, infatti, questa regex credo che non valga
>>bene se inserisco una stringa con 5 carattteri alfanumerici
>>e 2 non alfanumerici. Io se fossi in te separerei i problemi
>>in 2, mispiego: tu vuoi validare una stringa che sia di almeno
>>7 caratteri e che contenga almeno un carattere non alfanumerico.
>>puoi fare smplicemente un check della lunghezza sulla stringa
>>per controllare la prima condizione ed un semplice \W+ o [^ a-zA-z0-9]{1,}
>>percontrollare che la stringa contenga almenu un carattere non
>>alfanumerico. Spero di essere stato chiaro, ciao, M
>
>Anche la tua idea è giusta....ma è implementabile con una regular
>expression?
>
>Fatemi fare un piccolo quadro della situazione.
>Devo validare l'inserimento di una password con le caratteristiche
>che ho descritto all'inizio del post.
>Ho pensato di utilizzare un RegularExpressionValidator per potermi
>impratichire con le espressioni regolari (e per contenere il
>codice).
>Nel tuo caso (forse) dovrei utilizzare un CustomValidator...ma
>in quel caso il controllo l'ho faccio da codice sfruttando tutta
>l'espressività del linguaggio di programmazione in uso (nel mio
>caso c#)...ma cio è facile
>
Esatto fai qualcosa del tipo :

bool bootemp=false;
if (mytxt.text.lenght()>6)
{
string mypattern="\W+";
Regex rxx = new Regex( mypattern);
if (rxx.Match( mytxt.text).Success)
bootemp=true;
}
return bootemp;

così avrai nella variabile bootemp la validazione della tua P@ssw0rd. Ciao

nullatore Profilo | Junior Member

>>Anche la tua idea è giusta....ma è implementabile con una regular
>>expression?
>>


Perdonami. Mi sono espresso male. Volevo dire se tutto quello che è stato detto sopra sia gestibile solo con un RegularExpressionValidator.

ghio Profilo | Newbie

>>>Anche la tua idea è giusta....ma è implementabile con una regular
>>>expression?
>>>
>
>
>Perdonami. Mi sono espresso male. Volevo dire se tutto quello
>che è stato detto sopra sia gestibile solo con un RegularExpressionValidator.
>
credo che potresti usare 2 regole consecutive la prima del tipo .{7,} mentre la seconda sarebbe \W+ se passa tutte e due i check la password sarà buona. ciao, M

0v3rCl0ck Profilo | Guru

Ciao,

questa regular fa il match che hai richiesto: ^(?=(?:\w*[\W])+)(?!.*\s).{7}$


Enjoy it
http://blogs.dotnethell.it/Regulator/

nullatore Profilo | Junior Member

Grande, immaginavo si potesse fare solo con una regex.
Senti visto che ci siamo e visto che l'msdn mi risulta un po' intrecciato a livello di spiegazione, mi puoi dire come hai composto questa regex?

Grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5