¿Qué estoy haciendo mal aquí?Regex para que coincida con los espacios alfanuméricos
string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", string.Empty);
// clean == "johns". I want "john s";
¿Qué estoy haciendo mal aquí?Regex para que coincida con los espacios alfanuméricos
string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", string.Empty);
// clean == "johns". I want "john s";
I sospecha^no funciona de la manera en que crees que es, fuera de una clase de personaje.
Lo que estás diciendo que hacer 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 [].
tienes razón, eso es con (que sabía, pero es tarde) –
Parece haber dos problemas.
Creo desea que la siguiente expresión regular @ "([^ a-zA-Z0-9 \ s]) +"
¿No reemplazaría todos los alfanuméricos y espacios con la cadena vacía? – zigdon
Respecto al n. ° 2, el cuantificador en realidad no importa ya que quiere reemplazar todos los caracteres no coincidentes en la cadena en lugar de solo una ejecución de ellos, lo que requiere un reemplazo global (.../g en Perl, no estoy seguro de la sintaxis C#), con o sin el */+. –
C# regex es @ "^ [a-zA-Z0-9 \ r] + $" – marcel
La circunfleja dentro de los corchetes significa que todos los caracteres excepto el rango posterior. Desea una circunfleja fuera de corchetes.
Sí, lo quiero dentro.Coincidir con cualquier cosa que no sea este rango de caracteres –
Oh, donde dijiste "quiero" pensé que querías decir que querías una expresión regular para que coincida con eso. Quieres decir que quieres que el resultado de Reemplazar sea eso. Entonces quieres que la expresión regular no coincida con eso. Me duele el cerebro. –
lo tengo:
string clean = Regex.Replace(q, @"[^a-zA-Z0-9\s]", string.Empty);
No sabía que podría poner \ s en los soportes
Su expresión regular solo coincidirá con cadenas que no contengan números alfanuméricos, números o espacios. El^al comienzo de un [] significa "nada aquí dentro" – JaredPar
Eso es exactamente lo que quiero. En Regex.Replace, quiero hacer coincidir cualquier cosa que NO sea una letra, número o espacio. –
Ah bien, más claro ahora. – JaredPar
Este:
string clean = Regex.Replace(dirty, "[^a-zA-Z0-9\x20]", String.Empty);
\ x20 es ascii hexágono para el carácter 'espacio'
puede agregar más caracteres individuales que desea que sean permitidos. Si quiere, por ejemplo, "?" para estar bien en la cadena de retorno agregue \ x3f.
también puede hacer coincidir un carácter ** ASCII ** como octal. En ese caso ** \ 040 ** representa un carácter de espacio. –
... o simplemente puede escribirlos textualmente si son cosas simples como espacio o?: '[^ A-Za-z0-9?]' Etc. – ChrisF
La siguiente expresión regular es el espacio para su inclusión en el cuadro de texto.
Regex r = new Regex("^[a-zA-Z\\s]+");
r.IsMatch(textbox1.text);
Esto funciona bien para mí.
¿No sería '[A-z \\ s]' más fácil que '[a-zA-Z \\ s]'? – Alexander
ok, duh soy tonto^comienza con ... estoy cansado. todavía no sé cómo hacer coincidir solo un espacio –