2010-11-05 22 views
129

Necesito una expresión regular para que coincida si en alguna parte de una oración NO hay < o>.Regex - No contiene ciertos caracteres

Si < o> están en la cadena, entonces debe devolver falso.

que tuvieron un éxito parcial con esto, pero sólo si mi <> son al principio o al final:

(?!<|>).*$ 

estoy usando .Net si eso hace la diferencia.

Gracias por la ayuda.

Añadir en la Pregunta:

Me preguntaba, ¿cómo modificar el siguiente de expresiones regulares sólo a devolver false si el texto incluye una etiqueta como <test>?

Respuesta

224
^[^<>]+$ 

El símbolo de intercalación en la clase de caracteres ([^) significa otra cosa que coincide, por lo que esto significa, a partir de la cadena, entonces uno o más de nada, excepto < y >, entonces el final de la cadena.

+0

¿Qué significa la primera referencia? ¿Esto no significaría nada que no contenga esos caracteres ... lo que significa solo cadenas que contienen esos caracteres? – RobKohr

+3

El primer medio de intercalación, comienzo de la secuencia. El dólar significa, fin de la cadena. –

+1

@PhilipRego Tenga cuidado con los caracteres especiales: el intérprete de comandos interpreta algunos de ellos. Mire para ver si ahora tiene un archivo llamado '] + $' en su directorio. Coloque toda la expresión regular entre comillas simples para que funcione. –

30

Aquí van:

^[^<>]*$ 

Esto pondrá a prueba para la cadena que no tiene < y sin >

Si desea probar una cadena que puede tener < y >, sino que también debe tener algo que no se debe utilizar solo

[^<>] (or ^.*[^<>].*$) 

Dónde [<>] significa cualquiera de < o > y [^<>] medios cualquier que no es de < o >.

Y, por supuesto, el obligatorio link.

+0

Esto no funciona. Tu '.' coincidirá con'> 'y' <'. – codaddict

+0

Agregué el punto por error. Lo siento. Gracias por notarlo. –

+0

Gracias por la ayuda. Cuando enchufo éste se rompe en asp.net con un error de servidor 500. – SetiSeeker

Cuestiones relacionadas