【发布时间】:2008-10-13 19:43:06
【问题描述】:
这次是简单的问题。
我正在尝试使用正则表达式测试字符串是否不包含字符。我认为表达式的形式是“[^x]”,其中 x 是您不想出现的字符,但这似乎不是工作。
例如,
Regex.IsMatch("103","[^0]")
和
Regex.IsMatch("103&","[^&]")
两者都返回 true(我希望 false)。
我开始使用"[^&]" 并认为可能需要将 & 转义为 \&,但它似乎没有任何区别。
想法?我认为它很小。
另外,我使用的是 .NET,所以请记住这一点。
编辑1:
我找到了this,但它似乎无法回答我遇到的问题。
编辑2:
我想回应Kevin 和Joel 的建议。这些建议确实会更快,但在这种情况下它们并没有实现我需要的灵活性,所以如果你通过搜索找到了这个问题,一定要看看他们的答案是否符合你的需求。在我的例子中,正则表达式被传递给 DataTable 验证方法,该方法循环遍历每一行并验证特定列中该行的内容是否与传入的 RegEx 匹配。因为我将重用这个方法对于正在验证的其他几个数据表,我想:
- 使用正则表达式启用最广泛的验证,并且
- 始终寻找正匹配(即,我希望依靠始终能够使用 Regex.IsMatch(cell, regexvariable) 而不是使用 !Regex.IsMatch(cell, regexvariable),因为大多数 DataTables 调用此方法将使用正匹配而不是负匹配。
希望对您有所帮助。
【问题讨论】:
-
如果你只检查单个字符的存在,你可以在没有正则表达式的情况下做得更好。凯文是对的:使用 .IndexOf() 或更简单的东西。它将更易读、更清晰、更快。
标签: .net regex regex-negation