tutorial regulares regular probar expresiones expresion especiales espacio ejemplos cualquier caracteres caracter blanco alfanumerico regex regex-negation

regex - regulares - Negar los caracteres en la expresión regular



expresiones regulares tutorial (5)

¿Cómo escribiría una expresión regular que coincida con los siguientes criterios?

  • Sin numeros
  • No hay caracteres especiales
  • No hay espacios

en una cuerda


El carácter dentro de una clase de caracteres [^] es el operador de negación común a la mayoría de las implementaciones de expresiones regulares (Perl, .NET, Ruby, Javascript, etc.) Así que lo haría así:

[^/W/s/d]

  • ^ - Coincide con cualquier cosa NO en la clase de personaje
  • / W - coincide con caracteres que no son palabras (un carácter de palabra se definiría como az, AZ, 0-9 y guión bajo).
  • / s - coincide con el espacio en blanco (espacio, tabulador, retorno de carro, avance de línea)
  • / d - coincide con 0-9

O puede tomar otro enfoque simplemente incluyendo lo que desea:

[A-Za-z]

La principal diferencia aquí es que la primera incluirá guiones bajos. Eso, y demuestra una forma de escribir la expresión en los mismos términos que estás pensando. Pero si invierte está pensando en incluir caracteres en lugar de excluirlos, a veces eso puede resultar en una expresión regular más fácil de leer.

No me queda completamente claro qué caracteres especiales no quieres. Pero escribí ambas soluciones en caso de que una funcione mejor para usted que la otra.


En Perl, sería algo como:

$string !~ /[/d /W]/

Por supuesto, depende de su definición de "caracteres especiales". /W coincide con todos los caracteres que no son palabras. Un carácter de palabra es cualquier carácter alfanumérico más el carácter de espacio.


Lo más importante para aprender sobre las expresiones regulares no es su sintaxis, sino la capacidad de explicar claramente lo que está buscando. Eso es realmente el 90% del problema.
Además, generalmente es mejor expresar lo que quieres en lugar de lo que no quieres.


Prueba ^ [^ 0-9 / p {P}] $


var StringInputToClean = @"[:(M)?*a'',/y<>&a#~%{}+.@// /27!;$+]"; var pattern = @"[^a-zA-Z0-9/s]"; string replacement = ""; var result = Regex.Replace(StringInputToClean, pattern, replacement);