我根本没有使用正则表达式,所以我很难排除故障.我希望正则表达式只在包含的字符串是所有数字时匹配; 但是下面的两个例子是匹配一个包含所有数字的字符串加上一个等号"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
}
Run Code Online (Sandbox Code Playgroud)
如果重要,我正在使用C#和.NET2.0.
Bil*_*ard 457
使用开始和结束锚点.
Regex regex = new Regex(@"^\d$");
Run Code Online (Sandbox Code Playgroud)
使用"^\d+$",如果你需要匹配一个以上的数字.
请注意,"\d"将匹配[0-9]和其他数字字符,如东部阿拉伯数字??????????.用于"^[0-9]+$"将匹配限制为仅阿拉伯数字0 - 9.
如果你需要包括除数字之外的任何数字表示(如初学者的十进制值),那么请参阅@tchrist的全面指南,用正则表达式解析数字.
Rob*_*ble 99
您的正则表达式将匹配包含数字的任何内容,您希望使用锚点来匹配整个字符串,然后匹配一个或多个数字:
regex = new Regex("^[0-9]+$");
Run Code Online (Sandbox Code Playgroud)
在^将锚定字符串的开始,$将锚定字符串的结尾,而+将匹配一个或多个(在这种情况下的数字)什么它之前.
And*_*ndy 37
如果你需要容忍小数点和千标记
var regex = new Regex(@"^-?[0-9][0-9,\.]+$");
Run Code Online (Sandbox Code Playgroud)
如果数字可以为负数,则需要" - ".
kas*_*rjj 17
它是匹配的,因为它找到"匹配"而不是完整字符串的匹配.您可以通过更改正则表达式来专门查找字符串的开头和结尾来解决此问题.
^\d+$
Run Code Online (Sandbox Code Playgroud)
Raz*_*dze 15
也许我的方法会帮助你.
public static bool IsNumber(string s)
{
return s.All(char.IsDigit);
}
Run Code Online (Sandbox Code Playgroud)
ult*_*lon 15
这适用于整数和十进制数.如果数字具有彗差千分隔符,则不匹配,
"^-?\\d*(\\.\\d+)?$"
Run Code Online (Sandbox Code Playgroud)
一些与此匹配的字符串:
894
923.21
76876876
.32
-894
-923.21
-76876876
-.32
Run Code Online (Sandbox Code Playgroud)
一些没有的字符串:
hello
9bye
hello9bye
888,323
5,434.3
-8,336.09
87078.
Run Code Online (Sandbox Code Playgroud)
小智 10
如果你需要检查所有数字是否都是数字(0-9),
^[0-9]+$
Run Code Online (Sandbox Code Playgroud)
1425是的
0142是的
0是的
1是的
154a25否则
1234 = 3254假
Mar*_* K. 10
这是我的工作:
^(-?[1-9]+\\d*([.]\\d+)?)$|^(-?0[.]\\d*[1-9]+)$|^0$
Run Code Online (Sandbox Code Playgroud)
还有一些测试
积极测试:
string []goodNumbers={"3","-3","0","0.0","1.0","0.1","0.0001","-555","94549870965"};
Run Code Online (Sandbox Code Playgroud)
否定测试:
string []badNums={"a",""," ","-","001","-00.2","000.5",".3","3."," -1","--1","-.1","-0"};
Run Code Online (Sandbox Code Playgroud)
不仅检查了C#,还检查了Java,Javascript和PHP
抱歉丑陋的格式化.对于任意数量的数字:
[0-9]*
Run Code Online (Sandbox Code Playgroud)
对于一个或多个数字:
[0-9]+
Run Code Online (Sandbox Code Playgroud)
另一种方式:如果您喜欢匹配波斯语或阿拉伯语等国际号码,则可以使用以下表达式:
Regex = new Regex(@"^[\p{N}]+$");
Run Code Online (Sandbox Code Playgroud)
要匹配文字句点字符,请使用:
Regex = new Regex(@"^[\p{N}\.]+$");
Run Code Online (Sandbox Code Playgroud)
虽然上述解决方案都不适合我的目的,但是这对我有用。
var pattern = @"^(-?[1-9]+\d*([.]\d+)?)$|^(-?0[.]\d*[1-9]+)$|^0$|^0.0$";
return Regex.Match(value, pattern, RegexOptions.IgnoreCase).Success;
Run Code Online (Sandbox Code Playgroud)
有效值的示例:“ 3”,“-3”,“ 0”,“ 0.0”,“ 1.0”,“ 0.7”,“ 690.7”,“ 0.0001”,“-555”,“ 945465464654”
无效值的示例:“ a”,“”,“”,“。”,“-”,“ 001”,“ 00.2”,“ 000.5”,“。3”,“ 3。”,“-1” ,“-1”,“-。1”,“-0”,“ 00099”,“ 099”
整数和浮点数的正则表达式:
^[+-]?\d*\.\d+$|^[+-]?\d+(\.\d*)?$
Run Code Online (Sandbox Code Playgroud)
数字可以以句点开头(没有前导数字),数字可以以句点结尾(没有结尾数字)。上面的正则表达式会将两者都识别为正确的数字。
一种 。(句号) 本身没有任何数字不是一个正确的数字。这就是为什么我们需要两个正则表达式部分(用“|”分隔)。
希望这可以帮助。
小智 5
使用开始和结束锚点。
Regex regex = new Regex(@"^\d$");
Run Code Online (Sandbox Code Playgroud)
使用"^\d+$",如果你需要匹配一个以上的数字。
| 归档时间: |
|
| 查看次数: |
732283 次 |
| 最近记录: |