【发布时间】:2012-04-23 02:02:11
【问题描述】:
我正在尝试使用 OR 运算符将 2 个正则表达式组合成 1 个:|
我有一个检查字母后跟 8 位数字的匹配:
Regex.IsMatch(s, "^[A-Z]\d{8}$")
我还有一个只检查 9 位数字:
Regex.IsMatch(s, "^\d{9}$")
现在,不要这样做:
If Not Regex.IsMatch(s, "^[A-Z]\d{8}$") AndAlso
Not Regex.IsMatch(s, "^\d{9}$") Then
...
End If
我以为我可以这样做:
If Not Regex.IsMatch(s, "^[A-Z]\d{8}|\d{9}$") Then
...
End If
显然我没有正确地将两者结合起来,而且显然我在正则表达式方面很糟糕。任何帮助将不胜感激。
对于那些想知道的人,我确实看过How to combine 2 conditions and more in regex,但我仍在摸不着头脑。
【问题讨论】:
-
另一种写法是
"^[A-Z0-9]\d{8}$"(大写字母或数字后跟8个数字)。不过,我认为您的正则表达式没有问题。你能提供一些应该/不应该匹配的字符串示例吗? -
@PatrickMcElhaney 有效条目为:A1234578 或 123456789
-
@Scott Patrick 的建议支持这两者,下面 Mike C 的回答也支持相同的正则表达式。
-
Scott - 通常情况下,如果我看到有人用相同的答案击败了我,我会删除我的帖子 - 但是,我看到的时间表明我领先一分钟。选择是你的,寿 :-)
-
如果您觉得它有用,我提供了一个可能的解释,说明为什么您的表达可能不像您期望的那样工作,但我不能确定,因为没有关于如何你的表达失败了:)