Creare una regular expression

lunedì 12 novembre 2007 - 15.36

bluelions Profilo | Senior Member

Salve,
qualcuno sa darmi un aiuto per la creazione di una regular expression in asp.net 2.0?

Dovrei creare una regular expression che mi fa il controllo su un campo in questo modo:

Se il carattere inserito è uno solo non posso accettare caratteri speciali (\!"£$%&....), se invece ho più di un carattere posso mettere tutto compresi i caratteri speciali.

Esempio metto nel campo:

? deve essere NON valido.

?? deve essere valido

" p ? deve essere valido

ppp ?^" deve essere valido

Purtroppo riesco a dirgli che se trova un solo carattere deve essere compreso [a-zA-Z0-9], ma per quelli successivi come faccio a dirgli che posso inserire tutti,compresi i caratteri speciali?

Resto in attesa di una vostra risposta
GRAZIE

0v3rCl0ck Profilo | Guru

Ciao,

Questa dovrebbe fare al caso tuo: ^[\w\\|!"£$%&/()=?^']{2,}|\w$


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

bluelions Profilo | Senior Member

si però se scrivo: p ' che dovrebbe essere valido, mi dice invece di no.

E' possibile fare un if sulle regulare expressione in modo tale da dirgli che se il carattere è uno solo deve accettare alfanumerici per i successivi tutti.

0v3rCl0ck Profilo | Guru

Non esistono if, ma costrutti per potere esaminare a fondo la struttura di una stringa, comunque non ti prendeva quella stringa perchè non avevo considerato gli spazi tra i caratteri speciali:

^[\w\\|!"£$%&/()=?^'\s]{2,}|\w$


Dentro alle parentesi quadrate puoi mettere tutti i caratteri che vuoi includere tra quelli speciali.

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

bluelions Profilo | Senior Member

ok, però ancora una cosa....se metto due o più spazi non deve essere valido......invece mi dice che è valido.....:)

0v3rCl0ck Profilo | Guru

Eccola:

^(?!\s{2})[\w\\|!"£$%&/()=?^'\s]{2,}$|^\w$

Se vuoi che neanche inizi con uno spazio al posto di: (?!\s{2}) metti: (?!\s), inoltre se vuoi che non finisca con spazi aggiungi (?<!\s) prima del primo $


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

0v3rCl0ck Profilo | Guru

Ciao,

Questo è un esempio, come mi chiedevi, con una sorta di if fatto con regular expression, però vanno utilizzate con cautela, ad esempio per quello che devi fare tu è più ottimizzata la regular che ti ho dato prima.


^(?!\s{2})(?(?=.{1}$)\w|[\w!"£$%&/()=?^ç°@#§\s]+)$


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

kduhcm Profilo | Junior Member

Sei bravo con i validators complimenti... Vorrei imparare a costruirli... mi sai dire un link che ti spieghi bene come farli? per esempio quesi simboli ^,?, come si fa la or la and ecc...

0v3rCl0ck Profilo | Guru

Ciao,

Grazie per i complimenti... io sto portando avanti un blog attuo proprio a spiegare come utilizzare al meglio le regular expression, partendo proprio dai concetti base, per poi arrivare ai costrutti più avanzati:

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

RSS: http://blogs.dotnethell.it/Regulator/rss.aspx


Ciao ciao
http://blogs.dotnethell.it/Regulator/

kduhcm Profilo | Junior Member

Grazie, ho incluso il tuo blog tra i favoriti

0v3rCl0ck Profilo | Guru

Grazie

Il prossimo articolo tratterà anche i caratteri di iterazione come * ? +
Intanto dai un occhio ai concetti di base che sono molto importanti, perchè si parte tutto da quello. Poi il mio intento dopo avere spiegato i concetti base dei caratteri di iterazioni, sarà quello di spiegare bene come funzionano all'interno del motore regex, perchè solo conoscendo bene cosa farà quest'ultimo, che si possono costruire regular expression potenti, veloci e utili.


Ciao
Stay Tuned!
http://blogs.dotnethell.it/Regulator/

kduhcm Profilo | Junior Member

Ok, attendo il tuo articolo allora

0v3rCl0ck Profilo | Guru

Accetteresti una risposta, che così si chiude il thread


http://blogs.dotnethell.it/Regulator/
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