我在我的c#代码中有以下内容 - 我喜欢它做的是检查表达式是否有数字或破折号但没有别的.如果我输入字母K以及短划线或数字,它仍然接受它.我怎么说快递是数字还是短划线:
     Match match = Regex.Match(input, @"[0-9-]");
请注意,输入是我传递给评估的文本.
Han*_*ing 40
Match match = Regex.Match(input, @"^[0-9-]*$");
这^意味着匹配应该从输入的开头开始$,它应该在输入的结尾处结束.
这*意味着(仅)0或更多的数字或短划线应该在那里(+而是使用1或更多).
myn*_*fey 10
您的正则表达式匹配字符串中存在的任何数字或短划线,请尝试以下操作:
Regex.Match(input, @"^[\d-]+$");
^ 字符串的开头
[\d-]+ 一个或多个数字或短划线
$ 字符串结束
以下任何正则表达式都可以正常工作。
[0-9\-]+  ( + one or more occurance)
[\d\-]+ (as \d represents numbers)
如果需要-必须在数字之间
[\d]+\-*[\d]+ will match any of following
90909900
9090-9009
900--900
如果您只想在数字之间使用一个(或不使用),则
[\d]+\-?[\d]+ will match any of following
90909900 pass
9090-9009 pass
900--900 fail