regex 用于分钟和秒验证的MudTextField的正则表达式掩码

33qvvth1  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(165)

我有一个文本字段供用户选择分钟+秒的持续时间。我试图使用一个IMask对象来限制使用正则表达式的输入。
问题是,这完全阻塞了输入,我甚至不能开始输入一个数字,我不明白,因为正如你在这些链接上看到的,我使用的两个正则表达式工作正常:
^[0-5]?\d:[0-5]\d $https://regex101.com/r/ZKO3oE/1
^([0-5]?[0-9]):([0-5]?[0-9])$https://regex101.com/r/aM7NHi/1
我的代码看起来像这样,你可以在下面的链接中尝试它:

<MudTextField Mask="@mask1" Label="Duration"  HelperText="@mask1.Mask"
                  @bind-Value="minutesAndSec"  Variant="@Variant.Text" Clearable />

IMask mask1 = new RegexMask(@"^[0-5]?\d:[0-5]\d$");

字符串
你可以在这里试试我的代码:
https://try.mudblazor.com/snippet/wOQnbvPhASvzgOyF
我一定是错过了什么?任何输入是非常赞赏,非常感谢

8fq7wneg

8fq7wneg1#

你需要确保你的输入(即使是不完整的)完全匹配模式。
这意味着你的两种模式都必须看起来像

@"^[0-5]?(?:\d(?::(?:[0-5]?\d)?)?)?$"

字符串
对时间和持续时间使用相同的模式。

  • 详情 *:
  • ^-字符串的开头
  • [0-5]?-从05的可选数字
  • (?:\d(?::(?:[0-5]?\d)?)?)?-可选序列
  • \d(?::(?:[0-5]?\d)?)?-一个数字,然后是一个可选的序列
  • :(?:[0-5]?\d)?-一个:字符,然后是一个可选的序列
  • [0-5]?\d-可选的05数字,然后是任何单个数字
  • $-字符串结束。
xghobddn

xghobddn2#

在我看来,自定义控件可能很复杂,可能会导致各种问题。相反,您可以使用时间输入类型,如下所示:

<MudTextField T="string" Label="Duration" InputType="InputType.Time"/>

字符串

相关问题