.Net 正则表达式验证器的匹配方式与 Regex 类不同

4
当我使用.Net RegularExpressionsValidator控件时,验证表达式与EXACT文本匹配。我的意思是,对于我提供的要验证的字符串,如果它与正则表达式模式有任何偏差,则该字符串无法验证。
例如:(([0-1][0-9])|([2][0-3])):([0-5][0-9])如果在RegularExpressionsValidator控件中给出,只会匹配像-> 12:00、07:15、23:59这样的字符串,但不匹配12:00foo、bar23:00、foobar等字符串。
现在,当我在代码后台使用Regex类并给它相同的正则表达式时,它将匹配所有包含匹配和其他字符的字符串。
例如:(使用与上一个示例相同的正则表达式)如果我使用Regex类,以下字符串将匹配-> 12:00、07:15、23:59和12:00foo(包含匹配)、bar23:00(包含匹配)。
它们被处理不同的原因是什么,有没有办法模仿RegularExpressionValidator控件的行为呢?
提前感谢!
2个回答

7

现在发生的是正则表达式验证器正在将您的字符串处理为一行文本。它隐式地在正则表达式开头放置了^和$匹配器。

这就像是在说:

^(([0-1][0-9])|([2][0-3])):([0-5][0-9])$
< p > 在 Regex Class 中上述表达式将产生与验证控件相同的结果。 < /p >

0

一个简单而万能的方法是让你的正则表达式从字符串开头一直匹配到结尾,以确保完全匹配:

^pattern$ 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接