2009-05-20 61 views
17

Estoy tratando de crear un patrón de expresión regular en C#. El patrón sólo puede permitir:C# Expresión regular para que coincida con letras, números y guión bajo

  • letras
  • números
  • subraya

Hasta ahora estoy teniendo poco de suerte (no soy bueno en expresiones regulares). Aquí es lo que he intentado hasta ahora:

// Create the regular expression 
string pattern = @"\w+_"; 
Regex regex = new Regex(pattern); 

// Compare a string against the regular expression 
return regex.IsMatch(stringToTest); 

Respuesta

27

EDIT:

@"^[a-zA-Z0-9\_]+$" 

o

@"^\w+$" 
+1

@JoeWhite el segundo partido de las letras inglesas mayúsculas http://regexstorm.net/tester?p=%5e%5cw%2b%24&i=ABC&o=m – ihebiheb

2

trata de experimentar con algo como http://www.weitz.de/regex-coach/ que le permite desarrollar expresiones regulares de forma interactiva.

Está diseñado para Perl, pero me ayudó a entender cómo funciona una expresión regular en la práctica.

18

@ "^ \ w + $"

\ w coincide con cualquier carácter "palabra", definida como cifras, letras y signos de subrayado. Es compatible con Unicode, por lo que coincidirá con letras con diéresis y cosas así (mejor que intentar rodar su propia clase de caracteres como [A-Za-z0-9_] que solo coincidiría con las letras en inglés).

El^al principio significa "coincide con el comienzo de la cadena aquí", y el $ al final significa "coincide con el final de la cadena aquí". Sin ellos, p. si solo tenía @ "\ w +", entonces "@@ Foo @@" coincidiría, porque contiene uno o más caracteres de palabras. Con^y $, entonces "@@ Foo @@" no coincidiría (lo cual suena como lo que está buscando), porque no tiene comienzo de serie seguido de una o más palabras caracteres seguidos por el final de la cadena.

Cuestiones relacionadas