我的代码目前正在使用以下与数字匹配的Regex表达式:
Regex numberExpression = new Regex(@"(?<Number>\d+)");
此电流适用于输入字符串,如“1”,“100”,“1a”,“a1”等....
但是我想改变它,所以当输入字符串包含一个字母时它不匹配,所以“1”,“100”将匹配,但“1a”,“a1”,则不会。
任何人都可以提供帮助,我知道这是一个简单的正则表达式问题,但我无法理解前后看。我试过了:
Regex numberExpression = new Regex(@"(?<Number>^![a-zA-Z]\d+![a-zA-Z])");
但是这不起作用,并且无法匹配任何上述输入。
答案 0 :(得分:8)
正则表达式过度。试试这个:
input.All(char.IsDigit);
答案 1 :(得分:5)
您正在尝试通过查找输入的数字子字符串,然后查看该子字符串之前或之后没有任何内容来进行艰难的操作。
执行此操作的简单方法是强制正则表达式匹配整个输入字符串或不匹配:
Regex numberExpression = new Regex(@"^\d+$");
其中&#34; ^&#34;意思是&#34;行的开头&#34;和&#34; $&#34;意思是&#34;行尾&#34;。