2010-02-17 23 views
7

NET. He creado un validador de expresiones regulares para verificar si hay caracteres especiales, lo que significa que no quiero caracteres especiales en el nombre de usuario. El siguiente es el códigoCómo verificar caracteres especiales usando regex

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

Si proporciono nombre de usuario como $%^& asghf entonces el validador da formato de datos como no válido, que es el resultado que quiero, pero si doy un s23 de datos _ @ .-^&()%^$ # entonces mi validador debe bloquear los datos, pero mi validador permite que los datos que está mal

entonces, ¿cómo no permitir ningún carácter especial excepto az 0-9 AA _ @ .-

, gracias Sunil Kumar Sahoo

Respuesta

14

Hay algunas cosas mal con su expresión. En primer lugar, no tiene el carácter de cadena de inicio ^ y el carácter de cadena final $ al principio y al final de la expresión, lo que significa que solo tiene que buscar una coincidencia en algún lugar de la cadena.

En segundo lugar, solo está buscando un personaje actualmente. Para forzar un partido de todos los personajes que tendrá que utilizar * Esto es lo que debe ser:

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

Gracias Spencer Ruport, Realmente su respuesta me ayudó mucho. Hice el gran error, entonces resolvió mi problema –

+3

Me alegra ayudar. Todos cometimos el gran error en algún momento. –

0

Cambie su expresión regular a ^[[email protected]]+$. Aquí ^ denota el comienzo de una cadena, $ es el final de la cadena.

+1

No estoy seguro de que se considere un carácter especial cuando está entre corchetes. Podría estar equivocado en esto. –

1

Su patrón comprueba si la cadena dada contiene cualquier carácter "no especiales"; no excluye los caracteres no deseados. Quieres cambiar dos cosas; hacen comprobar que toda la cadena contiene sólo caracteres permitidos, y también hacen que sea comprobar si hay más de un personaje:

^[[email protected]]+$ 

Agregado ^ antes de que el patrón para que sea de inicio coincidente en el principio de la cadena. También se agregó +$ después, + para asegurarse de que haya al menos un carácter en la cadena, y $ para asegurarse de que la cadena coincida con el final.

Cuestiones relacionadas