3

我尝试使用正则表达式来检查字符串是否仅包含:0-9、AZ、az、\、/ 或 -。我用过Regex validator = new Regex(@"[0-9a-zA-Z\-/]*");,无论我介绍什么字符串都是有效的。

检查如下所示:if(!validator.IsMatch(myString))

怎么了?

4

3 回答 3

4

如果我明白你想要什么。我相信你的模式应该是

new Regex(@"^[0-9a-zA-Z\\\-/]*$");

^$符号是分别匹配字符串开头和结尾的锚点。如果没有这些,该模式将匹配包含该类中任何字符的任何字符串。使用它们,它匹配包含该类中的字符的字符串。

您还指定要包含反斜杠字符,但\-字符类中有原始模式。这只是字符类中连字符的转义序列。要在字符类中还包含反斜杠,您需要单独指定(也转义)。所以生成的字符类有\\(反斜杠)后跟\-(连字符)。

现在,这仍将匹配空字符串,因为*意味着“零或更多”。如果您只想匹配非空字符串,请使用:

new Regex(@"^[0-9a-zA-Z\\\-/]+$");

意思是“+一个或多个”。

于 2013-03-07T16:25:06.057 回答
0

如果我写一个形式的正则表达式

"[some character class]*"

它将匹配每个字符串。每个字符串都包含 0 到多个字符类。

也许你想使用

new Regex(@"[0-9a-zA-Z\-/]+")

指定 1 到您的许多字符类。

于 2013-03-07T16:26:00.783 回答
0

使用+代替*

new Regex(@"[0-9a-zA-Z\-/]+");
于 2013-03-07T16:27:33.977 回答