C#正则表达式匹配字母、数字和下划线。

36

我正在尝试在C#中创建一个正则表达式模式。该模式只允许包含:

  • 字母
  • 数字
  • 下划线

到目前为止,我还没有成功(我不太擅长使用正则表达式)。以下是我迄今为止尝试的内容:

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

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

52

编辑:

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

1
@JoeWhite 第二个匹配也包含大写的英文字母 http://regexstorm.net/tester?p=%5e%5cw%2b%24&i=ABC&o=m - ihebiheb
1
第一种解决方案仅适用于英文字母,对于其他字母可能会失败。 - Johan Bergens

32

@"^\w+$"

的意思是:匹配以一个或多个字母、数字或下划线开头并以一个或多个字母、数字或下划线结尾的字符串。其中的\w表示任何“单词字符”,包括数字、字母和下划线,并且它能够识别Unicode编码,所以可以匹配带有变音符号等特殊字符的字母(比如说,用[A-Za-z0-9_]定义的字符类只能匹配英文字母)。

在正则表达式的开头使用^符号表示从字符串的开头开始匹配,在结尾使用$符号表示匹配到字符串的末尾。如果不加这些符号,例如,用@"\w+"表示匹配一个或多个单词字符,那么"@@Foo@@"将匹配成功,因为它包含了至少一个单词字符。而在正则表达式中加上^和$符号之后,"@Foo@@"就不能匹配成功了(这好像是你要找的结果),因为它没有以开头-一个或多个单词字符-结尾的形式出现在字符串中。


3
尝试使用类似http://www.weitz.de/regex-coach/这样的工具进行实验,它可以让您交互式地开发正则表达式。

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

-1

正则表达式

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接