我正在寻找C#中的正则表达式来匹配任何这些字符串:“+ 99.99”,“ - 99.99”,“99.99”。相同的正则表达式不应与字符串“+ -99.99”匹配。任何人都可以提出答案。
答案 0 :(得分:1)
以下对我有用:
String regex = "^(\\+|-)?99\\.99$";
String str1 = "-99.99";
String str2 = "+99.99";
String str3 = "99.99";
String str4 = "+-99.99";
System.Console.WriteLine(Regex.IsMatch(str1, regex));
System.Console.WriteLine(Regex.IsMatch(str2, regex));
System.Console.WriteLine(Regex.IsMatch(str3, regex));
System.Console.WriteLine(Regex.IsMatch(str4, regex));
System.Console.ReadKey();
退让
True True True False
说明:^
将指示正则表达式引擎从字符串的开头开始匹配,(\\+|-)
表示+
或-
字符。 +
是正则表达式语法中的特殊字符,因此需要进行转义。 OR运算符由|
字符表示。
?
表示+
或-
字符可能存在或不存在(它将匹配0或1之前的任何实例)。
99\\.99
表示字符串99.99
。 .
也是正则表达式语法中的特殊字符,因此需要进行转义。 $
字符将指示正则表达式引擎在字符串末尾停止匹配。
答案 1 :(得分:0)
试试这个:
[+-]?\d+\.\d+
解释
[+-]? any character of: '+', '-'
(optional, matching the most amount possible)
\d+ digits (0-9)
(1 or more time, matching the most amount possible)
\. '.'
\d+ digits (0-9)
(1 or more times, matching the most amount possible)
答案 2 :(得分:0)
您可以使用一些在线测试人员测试您的正则表达式(非常有助于学习正则表达式)。 我最喜欢的是:http://www.regexplanet.com/advanced/dotnet/index.html和http://regexhero.net/tester/
答案 3 :(得分:0)
如果您希望它只匹配正面或负面99.99,您可以使用[+-]?99\.99
。此正则表达式将匹配 99.99 ,可选地前面有+
或-
字符。如果您想匹配任何数字,可选择最多两位小数,您可以使用[+-]?\d{1,}(\.\d{0,2})?
。
像往常一样,如果您希望正则表达式仅匹配整个字符串,则需要添加^
并附加$
,即^[+-]?99\.99$
。