我正在创建 WPF TextBox 扩展控件,它必须仅通过使用正则表达式允许以下输入:
- 数字必须在 0 和 24 之间(0 <= 数字 <= 24)
- 浮点数后只能允许最多两位数,例如:0.5、0.55、23.2、23.55
我很难找出哪个正则表达式允许通过该范围。我开始了:
^[0-9]*(?:\.[0-9]*)?$
但这不太符合我的要求。所以我正在寻求帮助来获得这个正则表达式。
试试这个模式:
^24(?:\\.00?)?|(?:2[0-3]|1?[0-9])(?:\\.[0-9]{1,2})?$
为什么要使用正则表达式感到头疼?只需解析文本,检查值的范围和小数位数:
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;
}
此外,您将通过让系统处理来避免全球化问题(使用.
,,
取决于文化)。