我根本没用过正则表达式,所以在故障排除方面遇到了困难。我想正则表达式匹配仅当包含的字符串是所有数字;但是在下面两个例子中,它匹配的是一个包含所有数字加上等号的字符串,比如“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。


当前回答

Regex Regex =新的正则表达式(" ^[0 - 9]{1 4}=[0 - 9]{1,4]美元”)

其他回答

 console.log(/^(0|[1-9][0-9]*)$/.test(3000)) // true

你的正则表达式将匹配任何包含数字的东西,你想使用锚来匹配整个字符串,然后匹配一个或多个数字:

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

^将锚定字符串的开头,$将锚定字符串的结尾,+将匹配它前面的一个或多个字符(在本例中为数字)。

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

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

Regex Regex =新的正则表达式(" ^[0 - 9]{1 4}=[0 - 9]{1,4]美元”)

它是匹配的,因为它找到的是“匹配”,而不是完整字符串的匹配。您可以通过更改regexp来解决这个问题,以便专门查找字符串的开头和结尾。

^\d+$