0

我正在创建 WPF TextBox 扩展控件,它必须仅通过使用正则表达式允许以下输入:

  • 数字必须在 0 和 24 之间(0 <= 数字 <= 24)
  • 浮点数后只能允许最多两位数,例如:0.5、0.55、23.2、23.55

我很难找出哪个正则表达式允许通过该范围。我开始了:

^[0-9]*(?:\.[0-9]*)?$

但这不太符合我的要求。所以我正在寻求帮助来获得这个正则表达式。

4

2 回答 2

4

试试这个模式:

^24(?:\\.00?)?|(?:2[0-3]|1?[0-9])(?:\\.[0-9]{1,2})?$
于 2013-05-29T14:22:58.687 回答
4

为什么要使用正则表达式感到头疼?只需解析文本,检查值的范围和小数位数:

bool IsValid(string text) {
    decimal candidate;
    if(decimal.TryParse(text, out candidate)){

        if(
            candidate >= 0 && // Check lower bound
            candidate <= 24 && // CHeck higher bound
            Math.Round(candidate, 2) == candidate // Check number of decimals
        ) {
            return true;
        }

    }
     return false;
}

此外,您将通过让系统处理来避免全球化问题(使用.,取决于文化)。

于 2013-05-29T14:24:57.463 回答