【问题标题】:Ext.net Numberfield restricted input to only 2 optional decimals with input maskExt.net Numberfield 将输入限制为只有 2 个可选小数,带有输入掩码
【发布时间】:2016-01-25 15:54:12
【问题描述】:

我需要在 Ext.Net 中配置 numberfield,但我找不到正确的输入掩码,可以选择允许直到两位小数(第三个小数等被丢弃,如果用户按键被完全忽略)。自然数的数量可以是任何东西。禁止使用负数。

我的案例:

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

但这种方法似乎行不通。

【问题讨论】:

  • decimals 是什么意思?还有,为什么不允许12,258
  • 小数点后的数字en.wikipedia.org/wiki/Decimal_mark
  • 用户只想输入两个数字,而不是更多。

标签: c# regex input ext.net


【解决方案1】:

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

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

展开

 ^ 
 \d+ 
 (?:
      \. \d+ 

 )?
 (?:
      ,
      \d{1,2} 
 )?
 $ 

【讨论】:

    猜你喜欢
    • 2016-08-12
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2015-09-02
    • 2022-06-10
    • 2019-08-09
    • 1970-01-01
    相关资源
    最近更新 更多