2009-05-20 12 views
17

Próbuję utworzyć wzór wyrażeń regularnych w języku C#. Wzór może tylko pozwalają na:C# Wyrażenie regularne, aby dopasować litery, cyfry i podkreślenie

  • liter
  • numery
  • podkreśla

Do tej pory mam trochę szczęścia (nie jestem dobry w RegEx). Oto, co starałem dotąd:

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

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

Odpowiedz

27

EDIT:

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

lub

@"^\w+$" 
+1

@JoeWhite drugim meczu również wielkich liter angielskich http://regexstorm.net/tester?p=%5e%5cw%2b%24&i=ABC&o=m – ihebiheb

2

Spróbuj eksperymentować z czymś http://www.weitz.de/regex-coach/ który pozwala rozwijać regex interaktywnie.

Został zaprojektowany dla Perla, ale pomógł mi zrozumieć, jak działa regularne wyrażenie w praktyce.

18

@ "^ \ w + $"

\ W dopasowuje dowolny znak "słowo", zdefiniowanego jako cyfr, liter i znaków podkreślenia. Ma świadomość Unicode, więc pasuje do liter z umlautami i innymi (lepiej niż próbować rzucić własną klasą postaci, jak [A-Za-z0-9_], która pasowałaby tylko do angielskich liter).

Znak^na początku oznacza "dopasuj początek napisu tutaj", a $ na końcu oznacza "dopasuj koniec napisu tutaj". Bez tych, np. jeśli masz tylko @ "\ w +", to "@@ Foo @@" będzie pasować, ponieważ to zawiera jeden lub więcej znaków słownych. Za pomocą^i $, wtedy "@@ Foo @@" nie pasuje (co brzmi jak to, czego szukasz), ponieważ nie masz początku łańcucha, po którym następuje jedno lub więcej słów- znaki zakończone ciągiem znaków.

Powiązane problemy