Pregunta fácil esta vez.RegEx para saber si una cadena no contiene un carácter específico
Estoy tratando de probar si una cadena no contiene un carácter con expresiones regulares o no. Pensé que la expresión era de la forma "[^ x]" donde x es el personaje que no desea que aparezca, pero que no parece estar funcionando.
Por ejemplo,
Regex.IsMatch("103","[^0]")
y
Regex.IsMatch("103&","[^&]")
ambos devuelven verdadero (yo esperaría falsa).
Empecé a usar "[^&]"
y pensé que tal vez el & tenía que ser escapado como \ &, pero no parecía hacer la diferencia.
Ideas? Supongo que es algo pequeño.
Además, estoy usando .NET, así que tenlo en cuenta.
Edit1:
he encontrado this, pero no parece responder a la cuestión que estoy teniendo.
Edit2:
quería responder a Kevin y sugerencias Joel 's. De hecho, estas sugerencias serían más rápidas, pero no logran la flexibilidad que necesito en este caso, así que si encuentra esta pregunta a través de la búsqueda, definitivamente mire si sus respuestas se ajustan a sus necesidades. En mi caso, la expresión regular se transfiere a un método de validación de DataTable que recorre cada fila y verifica que el contenido de esa fila en una columna específica coincida con el RegEx que se transfiere. Como voy a reutilizar este método para varias otras tablas de datos que están siendo validados, que quería:
- usar expresiones regulares para permitir la más amplia gama de validaciones y
- siempre busco un resultado positivo (es decir, en lugar de utilizar Regex.IsMatch (celular! , regexvariable), quería confiar en siempre poder usar Regex.IsMatch (celda, variable regex) ya que la mayoría de los DataTables que invocan este método usarán la coincidencia positiva en lugar de la negativa.
Espero que eso ayude.
Si sólo está navegando por la presencia de un solo carácter, que pueda pasar mucho mejor sin expresiones regulares. Kevin tiene razón: use .IndexOf() o algo más simple. Será más legible, más claro y más rápido. – ruquay