Regualar Expression in aspNet

sabato 06 ottobre 2007 - 12.54

bluelions Profilo | Senior Member

Ho bisgno di creare una regular expression che NON mi permette di inserire un carattere speciale in una textbox.

freeteo Profilo | Guru

ciao,
io mi affiderei ad una funzione javascript che utilizza regex, qualcosa tipo:
<script type="text/javascript" language="javascript" > function SoloNumeri(e) { var keynum; var checker = new RegExp("\\d|[.,]"); if(window.event) // IE { keynum = e.keyCode; window.event.returnValue = checker.test(String.fromCharCode(keynum)); } else if(e.which) { // Netscape/Firefox/Opera keynum = e.which; if(keynum == 8) //--- back o spazio return true; else return checker.test(String.fromCharCode(keynum)); } } </script> <input id="pp" onkeypress="SoloNumeri(event)" />

questa impedisce l'inserimento di caratteri che non siano numerici nella textbox, la tua' sara "tarata" sulla serie di caratteri che non vuoi siano digitati, qualcosa come:

var checker = new RegExp("[^&*@]");
etc... insomma i caratteri che nn vuoi preceduti dal "^" che vuol dire "not"...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

0v3rCl0ck Profilo | Guru

Ciao,

il suggerimento dato da freeteo è ottimo, ti consiglierei però di fare il medesimo controllo anche lato server, se devi essere al 100% sicuro che non sia possibile ricevere caratteri speciali da quella textbox.


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

freeteo Profilo | Guru

si concordo ankio, qualcuno potrebbe disabilitare la funzione javascript con tools come la DeveloperToolbar di IE, o Firebug per FFox...e potenzialmente fare danni al tuo applicativo, ovviamente lo sai tu se è realmente possibile ma cmq è una buona norma validare sempre i dati prima di scritture...

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

bluelions Profilo | Senior Member

e quindi come potrei fare.?

freeteo Profilo | Guru

si quindi puoi usare il codice che ti ho detto io per fare una prima validazione dell'input con javascript direttamente nella pagina, e poi pero' lato server, quindi condice .net, prima di salvare il valore fare un replace nella stringa con "", oppure mandare un messaggio di input non corretto nella pagina (puoi usare una label di fianco alla textbox che valorizzi con il testo del messaggio).

Cosi' sei sicuro che comunque vada, anche nel caso remoto in cui un utente voglia tentare di "hakerare" quella casella introducendo dei caratteri non ammessi, tu controllandoli anche lato server non vanno a fare alcun danno al tuo applicativo.

Sinceramente dubito che si verifichi qualcosa del genere, e quindi a mio avviso la risposta che ti ho dato prima di usare quella funzioncina in javascript ti potrebbe gia' bastare...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

0v3rCl0ck Profilo | Guru

Scusami se mi intrometto ancora, potrebbe anche semplicemente usare un validatore regex. In questo modo avrebbe sia il controllo lato client che lato server, semplicemente mettendo nel codice della funzione del pulsante: If Not Page.IsValid Then Exit Sub

Mentre questa è la sintassi da usare nella pagina aspx:

<asp:RegularExpressionValidator
ID="regexpName"
ErrorMessage="This expression does not validate."
ControlToValidate="txtName"
ValidationExpression="^[a-zA-Z'.\s]$"
runat="server" />


Enjoy It
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