正则表达式仅用于数字

我根本没有使用正则表达式,所以我遇到了疑难解答。 我只想在包含的字符串是数字时才匹配正则表达式; 但通过下面的两个例子,它匹配一个包含所有数字的字符串加上一个等号“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#和.NET2.0。


使用开始和结束锚点。

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

如果您需要匹配多个数字,请使用"^d+$"


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


如果您需要包含除数字以外的任何数字表示(如初学者的十进制值),请参阅@ tchrist的全面指南,以便用正则表达式解析数字。


您的正则表达式将匹配包含数字的任何内容,您希望使用锚匹配整个字符串,然后匹配一个或多个数字:

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

^将锚定字符串的开头, $将锚定字符串的结尾,并且+将匹配一个或多个它之前的内容(在这种情况下为数字)。


如果你需要忍受小数点和千分号...

var regex = new Regex(@"^-*[0-9,.]+$");

更新:如果号码可以变为负值,您将需要“ - ”。 更新:将“ - ”移到开头以避免匹配不起始的“ - ”

链接地址: http://www.djcxy.com/p/76709.html

上一篇: Regex for numbers only

下一篇: Regex that matches a string that ends with the same sequence as it begins