Regex: no contiene ciertos caracteres


275

Necesito una expresión regular para que coincida si en alguna parte de una oración NO hay <o>.

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

Tuve un éxito parcial con esto, pero solo si mis <> están al principio o al final:

(?!<|>).*$

Estoy usando .Net si eso hace la diferencia.

Gracias por la ayuda.

Respuestas:


437
^[^<>]+$

El símbolo de intercalación en la clase de caracteres ( [^) significa que coincide con cualquier cosa, pero esto significa, el comienzo de la cadena, luego uno o más de cualquier cosa excepto <y >, luego, el final de la cadena.


3
¿Qué significa el primer caret? ¿Significaría esto que no hay nada que no contenga esos caracteres ... por lo tanto, solo significa cadenas que sí contienen esos caracteres?
RobKohr

11
El primer signo de intercalación, comienzo de la cuerda. El dólar significa, final de la cadena.
Ned Batchelder

2
@PhilipRego Tenga cuidado con los caracteres especiales: el shell interpreta algunos de ellos. Mire para ver si ahora tiene un archivo llamado '] + $' en su directorio. Ponga la expresión regular completa entre comillas simples para que funcione.
Ned Batchelder

¡Gran respuesta! ¿Podría agregar una explicación de por qué hay un +y el primer cursor?
Dr_Zaszuś

1
@ Dr_Zaszuś "+" significa "uno o más", y "^" significa "comienzo de cadena".
Ned Batchelder

59

Aqui tienes:

^[^<>]*$

Esto probará la cadena que tiene no <y no>

Si desea probar una cadena que puede tener <y >, pero también debe tener algo más, debe usar solo

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

Donde [<>]significa cualquiera de <o> y [^<>]significa cualquiera que no sea de <o> .

Y, por supuesto, el enlace obligatorio .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.