为什么这个正则表达式在.NET中不起作用?

3

我希望有一个正则表达式,可以验证字符串以字母开头,后面跟着一些字母、数字或下划线。根据我的EditPadPro正则表达式解析器,以下测试应该通过。但实际上未通过。

Regex.IsMatch("Class1_1", @"^\w[\w|\d|_]*$").ShouldBeTrue();

我错过了什么?

没关系,大家不用理我。我打错了,但我不知道 \w 包括数字和下划线。 - George Mauer
2个回答

5
你的正则表达式可以工作,但它并没有实现你想要的功能。
你应该使用:
Regex.IsMatch("Class1_1", @"^[A-Za-z]\w*$")

(已测试)


另一种写法是 “^\w[\w\d_]*$”,但正如 David M 指出的那样,\w 已经包含了 \d 和 _,因此实际上应该写作“^[a-zA-Z]\w+$”。 - Zarigani

3

\w 包括数字和下划线 - 即使您的测试通过,正则表达式也不会测试您想要的内容!


Regex.IsMatch("Class1_1", @"^\w+$") 不起作用。有什么评论为什么? - George Mauer
可能是您的全球化设置问题 - 这个表达式在我的机器上匹配。 - Eamon Nerbonne

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