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); 

编辑:

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

要么

 @"^\w+$" 

@ “^ \ w + $”

\ w匹配任何“单词字符”,定义为数字,字母和下划线。 它具有Unicode感知能力,所以它会与变音符号等字母匹配(比试图像[A-Za-z0-9_]那样只能匹配英文字母的字符串更好)。

开头的^表示“匹配字符串的开头”,最后的$表示“匹配字符串的结尾”。 没有这些,例如,如果你只有@“\ w +”,那么“@@ Foo @@”将匹配,因为它包含一个或多个单词字符。 使用^和$,然后“@@ Foo @@”将不匹配(这听起来像你正在寻找的那样),因为你没有字符串的开头,后跟一个或多个字 – 字符串后跟字符串结尾。

尝试使用像http://www.weitz.de/regex-coach/这样的东西,让您以交互方式开发正则表达式。

它是为Perl设计的,但帮助我了解正则表达式在实践中是如何工作的。

正则表达式

 packedasciiRegex = new Regex(@"^[!#$%&'()*+,-./:;?@[\]^_]*$");