-3

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

4

4 回答 4

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();

产出:

真真真假

解释: ^将指示正则表达式引擎从字符串的开头开始匹配,(\\+|-)表示一个+-字符。是正则表达式语法中的+特殊字符,因此需要转义。OR 运算符由|字符表示。

?表示+or-字符可能存在也可能不存在(它将匹配它之前的 0 或 1 个实例)。

99\\.99表示字符串99.99。也是正则表达式语法中的.特殊字符,因此需要转义。该$字符将指示正则表达式引擎在字符串末尾停止匹配。

于 2012-07-26T06:49:37.093 回答
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)
于 2012-07-26T06:51:39.547 回答
0

您可以使用一些在线测试人员来测试您的正则表达式(对学习正则表达式很有帮助)。我最喜欢的是:http ://www.regexplanet.com/advanced/dotnet/index.html和http://regexhero.net/tester/

于 2012-07-26T06:54:29.267 回答
0

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

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

于 2012-07-26T07:17:14.667 回答