我希望有一个文本框,用户只能以T-12321格式输入。
我在文本框PreviewTextInput中使用以下代码,但无法满足我的要求。任何帮助都非常感谢。
private void txtAdmitDateFrom_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = new Regex(@"[^0-9tT^+^\-^\/]{1}").IsMatch(e.Text);
}
答案 0 :(得分:0)
答案 1 :(得分:0)
我花了很多时间来解释你的正则表达式有什么问题:它是一个否定的字符类,它只匹配1个不是数字的字符,而不是t
或T
,而不是^
,-
(您已在角色类中转义)或/
。无需重复^
,BTW。
我的回答:你可以使用它(如果你想在结尾允许0到10位数字):
^(?i)t[-+]\d{0,10}$
或者,如果您只需匹配0
到10
的数字:
^(?i)t[-+](?:[0-9]|10)$
代码:
e.Handled = new Regex(@"^(?i)t[-+]\d{0,10}$").IsMatch(e.Text); // or
e.Handled = new Regex(@"^(?i)t[-+](?:[0-9]|10)$").IsMatch(e.Text);
测试:
var rgx = new Regex(@"^(?i)t[-+]\d{0,10}$");
var matches = rgx.Matches("T-12321");
rgx = new Regex(@"^(?i)t[-+](?:[0-9]|10)$");
matches = rgx.Matches("T-10");
1) 2)