2009-05-20 3 views
17

Я пытаюсь создать шаблон регулярного выражения в C#. Шаблон может только позволить:C# Регулярное выражение для соответствия буквам, цифрам и подчеркиванию

  • букв
  • номера
  • подчеркивает

До сих пор я с немного удачи (я не очень хорошо RegEx). Вот то, что я пытался до сих пор:

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

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

ответ

27

EDIT:

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

или

@"^\w+$" 
+1

@JoeWhite второй матч также прописные английские буквы http://regexstorm.net/tester?p=%5e%5cw%2b%24&i=ABC&o=m – ihebiheb

2

Попробуйте поэкспериментировать с чем-то вроде http://www.weitz.de/regex-coach/ который позволяет развивать регулярное выражение в интерактивном режиме.

Он предназначен для Perl, но помог мне понять, как регулярное выражение работает на практике.

18

@ "^ \ ш + $"

\ ш совпадает с любым "слово" символ, определяемый как цифр, букв и символов подчеркивания. Это Unicode-осведомленный, поэтому он будет соответствовать буквам с умляутами и такими (лучше, чем пытаться перевернуть свой собственный класс символов, например [A-Za-z0-9_], который будет соответствовать только английским буквам).

В начале означает, что «соответствует началу строки здесь», а $ в конце означает «совпадение конца строки здесь». Без них, например. если вы только что получили @ "\ w +", то "@@ Foo @@" соответствовало бы, потому что оно содержит один или несколько символов слова. С символами^и $, тогда «@@ Foo @@» не будет соответствовать (что похоже на то, что вы ищете), потому что у вас нет начала строки, за которой следует одно или более слово- символы, за которыми следует конец строки.

Смежные вопросы