Regex for numbers only

I haven't used regular expressions at all, so I'm having difficulty troubleshooting. I want the regex to match only when the contained string is all numbers; but with the two examples below it is matching a string that contains all numbers plus an equals sign like "1234=4321". I'm sure there's a way to change this behavior, but as I said, I've never really done much with regular expressions.

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

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

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

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

In case it matters, I'm using C# and .NET2.0.


Use the beginning and end anchors.

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

Use "^d+$" if you need to match more than one digit.


Note that "d" will match [0-9] and other digit characters like the Eastern Arabic numerals ٠١٢٣٤٥٦٧٨٩ . Use "^[0-9]+$" to restrict matches to just the Arabic numerals 0 - 9.


If you need to include any numeric representations other than just digits (like decimal values for starters), then see @tchrist's comprehensive guide to parsing numbers with regular expressions.


Your regex will match anything that contains a number, you want to use anchors to match the whole string and then match one or more numbers:

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

The ^ will anchor the beginning of the string, the $ will anchor the end of the string, and the + will match one or more of what precedes it (a number in this case).


if you need to tolerate decimal point and thousand marker...

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

update: you will need "-", if the number can go negative. update: moved "-" to the beginning to avoid matching non-starting "-"

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

上一篇: 正则表达式匹配两个字符串之间的所有字符

下一篇: 正则表达式仅用于数字