当我使用.Net RegularExpressionsValidator控件时,Validation表达式匹配EXACT文本。当我这样说时,我的意思是,对于我给它验证的字符串,如果它偏离正则表达式模式,那么所有字符串都不会验证。
ex:(([0-1] [0-9])|([2] [0-3])):( [0-5] [0-9])如果在RegularExpressionsValidator控件中给出,则只匹配字符串,如 - > 12:00,07:15,23:59但不匹配字符串12:00foo,bar23:00,foobar。
现在,当我在后面的代码中使用Regex类并给它相同的正则表达式时,它匹配包含匹配和任何其他字符的所有字符串。
ex:(使用与上一个示例相同的正则表达式)如果我使用Regex类,则以下字符串将匹配 - > 12:00,07:15,23:59和12:00foo(包含一个匹配项),bar23:00(包含一个匹配项)。
是否有理由对它们进行不同的处理,是否有办法模仿与RegularExpressionValidator控件相同的行为?
提前致谢!
答案 0 :(得分:7)
正在发生的事情是正则表达式验证器正在将您的字符串作为一行文本处理。它隐含地在正则表达式的开头放入^和$匹配器。
就像说:
^(([0-1][0-9])|([2][0-3])):([0-5][0-9])$
Regex Class
中的上述表达式将产生与验证器控件相同的结果。
答案 1 :(得分:0)
让正则表达式与字符串完全匹配的一种简单通用方法是强制它从字符串的开头到结尾匹配,如下所示:
^pattern$