.net - solo - javascript regex test
Regex para que coincida con cualquier cosa menos dos palabras (3)
Obtengo lo que quieres hacer, pero los detalles de lo que quieres bloquear / permitir no están muy claros. Por ejemplo, ¿quieres bloquear algo que no sea exactamente foo
o bar
? ¿O quieres bloquear algo que contenga esas dos cadenas?
¿Pueden ser parte de otra cadena, como en los ejemplos de @ Tim''s foonly
o bartender
?
Solo voy a sugerir patrones para cada uno:
/^(?!foo$|bar$).*/ #credit to @Tim Pietzcker for this one, he did it first
#blocks "foo"
#blocks "bar"
#allows "hello goodbye"
#allows "hello foo goodbye"
#allows "foogle"
#allows "foobar"
/^(?!.*foo|.*bar).*$/
#blocks "foo"
#blocks "bar"
#allows "hello goodbye"
#blocks "hello foo goodbye"
#blocks "foogle"
#blocks "foobar"
/^(?!.*/b(foo|bar)/b).*$/
#blocks "foo"
#blocks "bar"
#allows "hello goodbye"
#blocks "hello foo goodbye"
#allows "foogle"
#allows "foobar"
Estoy tratando de escribir una expresión regular para que coincida con cualquier cosa que no sea "foo" y "bar". ¿Encontré la forma de hacer coincidir cualquier palabra excepto una palabra en la expresión Regular para que coincida con una línea que no contiene una palabra? pero no tengo mucha experiencia con expresiones regulares y no estoy seguro de cómo agregar una segunda palabra a esta crítica.
¡Cualquier ayuda sería muy apreciada!
ACLARACIÓN:
Quería coincidir con cualquier cosa que no fuera EXACTAMENTE foo o bar.
Responda a la pregunta: "¿Cómo agregar una segunda palabra a esta crítica ?"
La respuesta a la pregunta a la que te vinculas es:
^((?!word).)*$
Donde (?!word)
es un look-ahead negativo. La respuesta a esta pregunta es:
^((?!wordone|wordtwo).)*$
Funciona para ambas palabras. Nota: debe habilitar las opciones globales y multilínea , si tiene varias líneas y desea hacer coincidir para cada línea, como la otra pregunta.
La diferencia es la cláusula de anticipación negativa: (?!wordone|wordtwo)
. Puede extenderse a cualquier cantidad (razonable) de palabras o cláusulas.
Vea esta respuesta para una explicación detallada.
Responde a la pregunta: "¿Una expresión regular que coincida con cualquier cosa que no sea" foo "y" barra "?
^(?!foo$|bar$).*
Haría exactamente eso.
^ # Start of string
(?! # Assert that it''s impossible to match...
foo # foo, followed by
$ # end of string
| #
bar$ # bar, followed by end of string.
) # End of negative lookahead assertion
.* # Now match anything
Es posible que deba establecer RegexOptions.Singleline
si su cadena puede contener nuevas líneas que también desee hacer coincidir.