C#RegEx表示最多100个数字

时间:2013-07-09 20:30:21

标签: c# regex

我创建了一个正则表达式来匹配1-100中的数字,包括小数,例如50.25

由于某种原因,十进制数字不匹配,我不明白为什么。

有人可以帮忙吗?

string pattern = @"^([1-9][0-9]{0,1}(\\.[\\d]{1,2})?|100)$";
Regex r = new Regex(pattern);
Match m = r.Match(s.SearchRadius);
if (!m.Success)
{
    s.SearchRadius = "20";
}

4 个答案:

答案 0 :(得分:9)

您在字符串上使用@符号,因此不应该转义\字符。

你需要的只是

string pattern = @"^([1-9][0-9]{0,1}(\.[\d]{1,2})?|100)$";

答案 1 :(得分:4)

使用@""字符串文字时,不会转义反斜杠。您可能打算使用\.\d

@"^([1-9][0-9]{0,1}(\.[\d]{1,2})?|100)$";

答案 2 :(得分:2)

只是为了扮演恶魔倡导者 - 非正则表达式的解决方案是:

double d;
if (!(double.TryParse(s.SearchRadius, out d) && d <= 100 && d >= 0))
{
    s.SearchRadius = "20";
}

好的衡量杰米·扎金斯基的名言:

  

有些人在遇到问题时会想“我知道,我会用   正则表达式。“现在他们有两个问题。

答案 3 :(得分:0)

您的代码同时捕获数字xx.xx和.xx。如果您希望它仅在第二个括号中插入?:时捕获数字。

^([1-9][0-9]{0,1}(?:\.[\d]{1,2})?|100)$

顺便说一下,测试正则表达式的好方法是像http://rubular.com/这样的网站 你可以在哪里看到结果。