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})?

但这种方法似乎行不通。

Ext.net 数字字段将输入限制为仅 2 个带有输入掩码的可选小数

描述所有这些事情的正则表达式是
@"^'d+(?:'.'d+)?(?:,'d{1,2})?$"

如果你能描述一个面具,它应该可以工作。

扩大

 ^ 
 'd+ 
 (?:
      '. 'd+ 
 )?
 (?:
      ,
      'd{1,2} 
 )?
 $