我有一个文本字段供用户选择分钟+秒的持续时间。我试图使用一个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的
我一定是错过了什么?任何输入是非常赞赏,非常感谢
2条答案
按热度按时间8fq7wneg1#
你需要确保你的输入(即使是不完整的)完全匹配模式。
这意味着你的两种模式都必须看起来像
字符串
对时间和持续时间使用相同的模式。
^
-字符串的开头[0-5]?
-从0
到5
的可选数字(?:\d(?::(?:[0-5]?\d)?)?)?
-可选序列\d(?::(?:[0-5]?\d)?)?
-一个数字,然后是一个可选的序列:(?:[0-5]?\d)?
-一个:
字符,然后是一个可选的序列[0-5]?\d
-可选的0
到5
数字,然后是任何单个数字$
-字符串结束。xghobddn2#
在我看来,自定义控件可能很复杂,可能会导致各种问题。相反,您可以使用时间输入类型,如下所示:
字符串