C#正则表达式匹配“+99.99”或“-99.99”或“99.99”

时间:2012-07-26 06:45:23

标签: c# regex numbers

我正在寻找C#中的正则表达式来匹配任何这些字符串:“+ 99.99”,“ - 99.99”,“99.99”。相同的正则表达式不应与字符串“+ -99.99”匹配。任何人都可以提出答案。

4 个答案:

答案 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.htmlhttp://regexhero.net/tester/

答案 3 :(得分:0)

如果您希望它只匹配正面或负面99.99,您可以使用[+-]?99\.99。此正则表达式将匹配 99.99 ,可选地前面有+-字符。如果您想匹配任何数字,可选择最多两位小数,您可以使用[+-]?\d{1,}(\.\d{0,2})?

像往常一样,如果您希望正则表达式仅匹配整个字符串,则需要添加^并附加$,即^[+-]?99\.99$