regex - regulares - regular expression creator online
Reemplazar caracteres si no coinciden (2)
Estoy buscando una expresión regular que elimine caracteres ilegales. Pero no sé cuáles serán los personajes.
Por ejemplo:
En un proceso, quiero que mi cadena coincida ([a-zA-Z0-9/-]*)
. Así que me gustaría reemplazar todos los caracteres que no coincidan con la expresión regular anterior.
Eso sería:
[^a-zA-Z0-9/-]+
[^ ]
al comienzo de una clase de caracteres la niega, coincide con los caracteres que no están en la clase.
Ver también: Clases de personajes.
Gracias a la respuesta de , he creado un método de ayuda para eliminar caracteres no aceptados .
El patrón permitido debe estar en formato Regex, espere que estén envueltos entre corchetes. Una función insertará una tilde después de abrir el corchete. Anticipo que podría no funcionar para todos los RegEx que describan conjuntos de caracteres válidos, pero funciona para conjuntos relativamente simples que estamos usando.
/// <summary>
/// Replaces not expected characters.
/// </summary>
/// <param name="text"> The text.</param>
/// <param name="allowedPattern"> The allowed pattern in Regex format, expect them wrapped in brackets</param>
/// <param name="replacement"> The replacement.</param>
/// <returns></returns>
/// // https://.com/questions/4460290/replace-chars-if-not-match.
//https://.com/questions/6154426/replace-remove-characters-that-do-not-match-the-regular-expression-net
//[^ ] at the start of a character class negates it - it matches characters not in the class.
//Replace/Remove characters that do not match the Regular Expression
static public string ReplaceNotExpectedCharacters( this string text, string allowedPattern,string replacement )
{
allowedPattern = allowedPattern.StripBrackets( "[", "]" );
//[^ ] at the start of a character class negates it - it matches characters not in the class.
var result = Regex.Replace(text, @"[^" + allowedPattern + "]", replacement);
return result; //returns result free of negated chars
}