我根本没用过正则表达式,所以在故障排除方面遇到了困难。我想正则表达式匹配仅当包含的字符串是所有数字;但是在下面两个例子中,它匹配的是一个包含所有数字加上等号的字符串,比如“1234=4321”。我确信有一种方法可以改变这种行为,但正如我所说的,我从来没有真正使用过正则表达式。

string compare = "1234=4321";
Regex regex = new Regex(@"[\d]");

if (regex.IsMatch(compare))
{ 
    //true
}

regex = new Regex("[0-9]");

if (regex.IsMatch(compare))
{ 
    //true
}

以防万一,我使用的是c#和。net 2.0。


当前回答

整数和浮点数的正则表达式:

^[+-]?\d*\.\d+$|^[+-]?\d+(\.\d*)?$

数字可以以句号(不带前导数字)开头, 数字可以以句号结尾(后面没有数字)。 以上正则表达式将两者都识别为正确的数字。

一个。(句号)本身没有任何数字不是正确的数字。 这就是为什么我们需要两个正则表达式部分(用“|”分隔)。

希望这能有所帮助。

其他回答

^\d+$,在英语中是“字符串的开始”,“1个或多个数字”,“字符串的结束”。

使用开始锚和结束锚。

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

如果需要匹配多个数字,请使用“^\d+$”。


请注意,“\d”将匹配[0-9]和其他数字字符,如东部阿拉伯数字٠١٢٣٤٥٦٧٨٩。使用"^[0-9]+$"将匹配限制为阿拉伯数字0-9。


如果您需要包含除数字以外的任何数字表示形式(例如初学者的十进制值),那么请参阅@tchrist关于使用正则表达式解析数字的综合指南。

如果你需要检查是否所有的数字都是数字(0-9),

^[0-9]+$

匹配

1425
0142
0
1

不匹配

154a25
1234=3254

也许我的方法对你有帮助。

    public static bool IsNumber(string s)
    {
        return s.All(char.IsDigit);
    }

检查字符串是否为uint, ulong或只包含数字1 .(点)和数字 样例输入

Regex rx = new Regex(@"^([1-9]\d*(\.)\d*|0?(\.)\d*[1-9]\d*|[1-9]\d*)$");
string text = "12.0";
var result = rx.IsMatch(text);
Console.WriteLine(result);

样品

123 => True
123.1 => True
0.123 => True
.123 => True
0.2 => True
3452.434.43=> False
2342f43.34 => False
svasad.324 => False
3215.afa => False