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


当前回答

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

其他回答

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

另一种方法:如果你喜欢匹配国际号码,比如波斯语或阿拉伯语,那么你可以使用下面的表达式:

Regex = new Regex(@"^[\p{N}]+$");

要匹配文字句点字符使用:

Regex = new Regex(@"^[\p{N}\.]+$");

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

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

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

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

希望这能有所帮助。

下面的正则表达式只接受英语和阿拉伯语(波斯语)语言中的数字(也是浮点数)(就像Windows计算器一样):

^((([0\u0660\u06F0]|([1-9\u0661-\u0669\u06F1-\u06F9][0\u0660\u06F0]*?)+)(\.)[0-9\u0660-\u0669\u06F0-\u06F9]+)|(([0\u0660\u06F0]?|([1-9\u0661-\u0669\u06F1-\u06F9][0\u0660\u06F0]*?)+))|\b)$

上面的正则表达式接受以下模式:

11
1.2
0.3
۱۲
۱.۳
۰.۲
۲.۷

上述正则表达式不接受以下模式:

3.
.3
0..3
.۱۲

这适用于整数和十进制数。如果数字有昏迷千分隔符,它就不匹配,

"^-?\\d*(\\.\\d+)?$"

与此匹配的字符串:

894
923.21
76876876
.32
-894
-923.21
-76876876
-.32

一些字符串没有:

hello
9bye
hello9bye
888,323
5,434.3
-8,336.09
87078.