2012-04-16 47 views
11

Estoy buscando una expresión regular que se adhiere a las reglas siguientes.Expresión regular incluye y excluye caracteres especiales

Caracteres permitidos

del alfabeto:/A-Z
Números-Z A: 0-9
caracteres especiales: ~ @ # $^& *() - _ + = [] {} | \,. ? :
(espacios deben ser permitidos)

No se permiten

caracteres especiales: <> ' "/;`%

+0

¿Y el resto de los personajes? ¿Están permitidos o no? –

+0

¿Has intentado encontrar uno? ¿Cuál es exactamente la pregunta que tienes al respecto? – fivedigit

+2

¿Y solo quería decirnos que lo encontró? Gracias. Quizás esto también te ayude: http://www.regular-expressions.info/ –

Respuesta

25

Para los caracteres permitidos puede utilizar

^[[email protected]#$^*()_+=[\]{}|\\,.?: -]*$ 

para validar una cadena completa que debe constar solo de caracteres permitidos. Tenga en cuenta que - está al final (porque de lo contrario sería un rango) y se escapan algunos caracteres.

Para los caracteres no válidos puede utilizar

[<>'"/;`%] 

para comprobar por ellos.

combinar ambos en una sola expresión regular puede utilizar

^(?=[[email protected]#$^*()_+=[\]{}|\\,.?: -]*$)(?!.*[<>'"/;`%]) 

pero se necesitaría un motor de expresiones regulares que permite búsqueda hacia delante.

+0

¿podrías aclarar cómo debería usar tu expresión regular para permitir solo estos caracteres en mis cadenas y convertir el resto a todos los charcters en caracteres espaciales? –

+0

Haz una pregunta. – Joey

+0

Esta respuesta me ayudó, Gracias @Joey: D +1 – Anton

7

En realidad no han hecho una pregunta, pero suponiendo que tiene uno, esto podría ser su respuesta ...

Suponiendo que todos los caracteres, excepto los "caracteres especiales" están permitidos puede escribir

String regex = "^[^<>'\"/;`%]*$"; 
+0

¿podría aclarar cómo debería usar su expresión regular para permitir solo estos caracteres en mis cadenas y convertir el resto a todos los charcters en caracteres de espacio en blanco? –

+2

@ user01 'text = text.replaceAll (" [<> '\ "/;%]", ""); 'o si desea combinar varios caracteres especiales y espacios' text = text.replaceAll ("[<> '\ "/;%] +", ""); ' –

+0

muchas gracias, pero en mi caso los caracteres no permitidos son todos excepto los permitidos (los permitidos son los mismos en cuestión). ¿Podría sugerir cómo hacerlo especificando los permitidos? A-z/A-Z /0-9 ~ @ # $^& *() - _ + = [] {} | \,. ? : –

3

Esto haría la coincidencia, si solo desea permitir que solo se ajuste en^$ o en cualquier otro delimitador que considere apropiado, si lo hace, no se necesita una lógica de rechazo específica.

Cuestiones relacionadas