【发布时间】:2011-02-15 17:41:48
【问题描述】:
我正在开发一个使用正则表达式来验证用户输入的文本输入应用程序。目标是在拒绝无效字符的同时允许适合某个 RegEx 的按键。我遇到的一个问题是,当用户开始输入信息时,他们可能会创建一个与给定正则表达式不匹配的字符串,但将来可能会导致匹配。这些字符串被错误地拒绝。这是一个示例 - 使用以下正则表达式输入日期信息:
(0?[1-9]|10|11|12)/(0?[1-9]|[12]\\d|30|31)/\\d{2}\\d{2}
用户可能开始输入“1/”,这可能是一个有效日期,但RegEx.IsMatch() 将返回 false,我的代码最终会拒绝该字符串。有没有办法针对正则表达式“乐观地”测试字符串,以便允许可能或部分匹配?
奖励:特别是对于这个 RegEx,有一些序列会导致所需的字符。例如,如果用户键入“2/15”,他们接下来可以输入的唯一可能的有效字符是“/”。是否可以检测到这些场景,以便自动输入所需的字符以方便用户输入?
【问题讨论】:
-
您是否有理由在每次击键时检查而不是在用户离开时检查?尝试在用户键入时进行验证通常非常困难,并且最终会在用户想要编辑时非常烦人。
-
记住“del”键 :-) 当用户转到 char 0 并按 del 时会发生什么?