Ext.net 数字字段将输入限制为仅 2 个带有输入掩码的可选小数
本文关键字:输入 掩码 小数 字段 数字 net Ext | 更新日期: 2023-09-27 18:31:44
我需要在 Ext.Net 中配置数字字段,但我找不到正确的输入掩码,可以选择允许直到两位小数(如果用户按下键完全忽略,则丢弃第三个小数等)。自然数的数量可以是任何东西。禁止使用负数。
我的案例:
- 54 ->接受
- 155,89 ->接受
- 10.234,01 ->接受
- 5,2 ->接受
- 1,23 ->接受
- 12,258 ->禁止
- 1,2,5 ->禁止
- SDF123 -> 禁止
这是我到目前为止尝试过的(C# 代码):
X.NumberFieldFor(m => m.MyPoperty).ID("MyId").HideTrigger(true).MaskRe(@"/['d,]/")
.Plugins(X.InputMask().ClearWhenInvalid(false)
.Mask("9?999,99")
);
X.NumberFieldFor(m => m.MyPoperty).ID("MyId").HideTrigger(true).MaskRe(@"/['d,]/")
.Plugins(X.InputMask().ClearWhenInvalid(false)
.Mask("x,tt")
.MaskSymbols(symbols =>
{
symbols.Add(new MaskSymbol() { Name = "x", Regex = @"/^[0-9]*$/" });
symbols.Add(new MaskSymbol() { Name = "t", Regex = "[0-9]" });
})
);
X.NumberFieldFor(m => m.SuperficieRealSol).ID("MyId").HideTrigger(true)
.Plugins(X.InputMask().ClearWhenInvalid(false)
.Mask("x")
.MaskSymbols(symbols =>
{
symbols.Add(new MaskSymbol() { Name = "x", Regex = @"^'d+('.'d{1,2})?$" });
})
);
X.NumberFieldFor(m => m.MyPoperty).ID("MyId")
.AllowExponential(false)
.DecimalPrecision(2)
.MinValue(0)
.HideTrigger(true);
我认为这里的问题是正则表达式和掩码符号之间的匹配。我看不出如何配置掩码和掩码符号以匹配多个键输入。例如,如果我的面具是
x,t
- x是任何自然数
'd+
,
位数无关紧要。 - t 会
(?:,'d{1,2})?
但这种方法似乎行不通。
描述所有这些事情的正则表达式是
@"^'d+(?:'.'d+)?(?:,'d{1,2})?$"
如果你能描述一个面具,它应该可以工作。
扩大
^
'd+
(?:
'. 'd+
)?
(?:
,
'd{1,2}
)?
$