2

我的代码目前正在使用以下与数字匹配的正则表达式:

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])");

但这不起作用,并且无法匹配上述任何输入。

4

2 回答 2

8

正则表达式是矫枉过正。尝试这个:

input.All(char.IsDigit);
于 2013-07-25T11:23:50.133 回答
5

您正在尝试通过查找输入的数字子字符串,然后查看在该子字符串之前或之后没有任何内容来尝试以艰难的方式做到这一点。

最简单的方法是强制正则表达式匹配整个输入字符串或不匹配:

Regex numberExpression = new Regex(@"^\d+$");

其中“^”表示“行首”,“$”表示“行尾”。

于 2013-07-25T11:31:22.880 回答