2010-02-17 15 views
7

NET. Ho creato un validatore regex per verificare la presenza di caratteri speciali, ovvero non desidero caratteri speciali nel nome utente. Quello che segue è il codiceCome verificare la presenza di caratteri speciali usando regex

Regex objAlphaPattern = new Regex(@"[[email protected]]"); 
      bool sts = objAlphaPattern.IsMatch(username); 

Se fornisco il nome utente da $%^& asghf poi il validatore dà formato di dati come non valida, che è il risultato che voglio, ma se mi forniscono un s23 dati _ @ .-^&()%^$ # poi il mio validatore dovrebbe bloccare i dati, ma il mio validatore permette i dati che è sbagliato

Così come per non consentire alcun carattere speciale, ad eccezione az AA 0-9 _ @ .-

Grazie Sunil Kumar Sahoo

risposta

14

Ci sono alcune cose che non vanno nella tua espressione. Innanzitutto non hai il carattere di stringa iniziale ^ e il carattere di fine stringa $ all'inizio e alla fine della tua espressione, il che significa che deve trovare una corrispondenza solo all'interno della stringa.

In secondo luogo, stai cercando un solo personaggio al momento. Per forzare una corrispondenza di tutti i personaggi che dovrete utilizzare * Ecco quello che dovrebbe essere:

Regex objAlphaPattern = new Regex(@"^[[email protected]]*$"); 
bool sts = objAlphaPattern.IsMatch(username); 
+0

Grazie Spencer Ruport, Davvero la tua risposta mi ha aiutato molto. Ho fatto il grande errore, quindi hai risolto il mio problema –

+3

Felice di aiutare. Abbiamo fatto tutti un grosso errore ad un certo punto. –

0

Cambia la tua espressione regolare a ^[[email protected]]+$. Qui ^ indica l'inizio di una stringa, $ è la fine della stringa.

+1

Non sono sicuro che sia considerato un carattere speciale quando è all'interno delle parentesi. Potrei sbagliarmi su questo. –

1

il vostro modello di verifica solo se la stringa data contiene qualsiasi carattere "non-speciale"; non esclude i personaggi indesiderati. Vuoi cambiare due cose; rendono verificare che l'intera stringa contiene solo caratteri consentiti, e rendono anche verificare la presenza di più di un personaggio:

^[[email protected]]+$ 

Aggiunto ^ prima che il modello per renderlo iniziare corrispondenza all'inizio della stringa. Anche aggiunto +$ dopo, + per garantire che ci sia almeno un carattere nella stringa, e $ per assicurarsi che la stringa è abbinato fino alla fine.

Problemi correlati