我有一个信用卡号码,我需要检查它是否有0到9的数字以及任何破折号。
我有以下内容:
Match match = Regex.Match(CardNumber, "[0-9-]");
if (match.Success)
{
}
它有效,但想知道我是否遗漏了任何可能无法正常工作的东西。
由于
答案 0 :(得分:1)
现在它只检查字符串CardNumber
中是否至少有一个数字或破折号,因此它会为字符串True
返回"hello0!"
。
如果要验证字符串,使只包含数字和短划线,则需要使用
Match match = Regex.Match(CardNumber, @"^[0-9-]*$");
答案 1 :(得分:1)
作为@Tim所写内容的一个小注释,他的正则表达式将匹配-12--34-
。可能你想要的是:
^([0-9]+-)*[0-9]+$
这至少需要一位数。如果要匹配空字符串,请使用
^([0-9]+-)*[0-9]*$
(一个或多个数字的0个或更多“组”加上-
和数字的最后“组”