正则表达式C#IsMatch()

时间:2013-03-07 16:22:07

标签: c# regex

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

支票看起来像这样:if(!validator.IsMatch(myString))

怎么了?

3 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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

+表示“一个或多个”。

答案 1 :(得分:0)

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

"[some character class]*"

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

也许您想使用

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

指定1到多个角色类。

答案 2 :(得分:0)

使用+代替*

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