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.