c# - solo - expresiones regulares java
Regex para que coincida con alfanuméricos y espacios (7)
¿Qué estoy haciendo mal aquí?
string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^/s)", string.Empty);
// clean == "johns". I want "john s";
El circunflejo dentro de los corchetes significa todos los caracteres, excepto el rango posterior. Desea una circunfleja fuera de corchetes.
Entiendo:
string clean = Regex.Replace(q, @"[^a-zA-Z0-9/s]", string.Empty);
No sabía que podía poner / s entre corchetes
Esta:
string clean = Regex.Replace(dirty, "[^a-zA-Z0-9/x20]", String.Empty);
/ x20 es un hexágono ascii para el personaje ''espacio''
puede agregar más caracteres individuales que desee que sean permitidos. Si quiere, por ejemplo, "?" para estar bien en la cadena de retorno agregue / x3f .
La siguiente expresión regular es para incluir espacio en el cuadro de texto.
Regex r = new Regex("^[a-zA-Z//s]+");
r.IsMatch(textbox1.text);
Esto funciona bien para mi.
Parece que hay dos problemas.
- Estás utilizando ^ fuera de [] que coincide con el inicio de la línea
- No estás usando un * o +, lo que significa que solo coincidirás con un solo personaje.
Creo que quieres la siguiente regex @ "([^ a-zA-Z0-9 / s]) +"
Sospecho que ^ no funciona de la manera en que crees que sucede fuera de una clase de personaje.
Lo que le está diciendo que haga es reemplazar todo lo que no sea alfanumérico con una cadena vacía, O cualquier espacio principal. Creo que lo que quieres decir es que los espacios están bien para no reemplazarlos, intenta mover el / s a la clase [].
solo un FYI
string clean = Regex.Replace(q, @"[^a-zA-Z0-9/s]", string.Empty);
en realidad sería mejor como
string clean = Regex.Replace(q, @"[^/w/s]", string.Empty);