【问题标题】:.Net RegularExpressionValidator matches differently than Regex class.Net RegularExpressionValidator 匹配不同于 Regex 类
【发布时间】:2010-10-15 06:56:08
【问题描述】:

当我使用 .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 类并为其提供相同的正则表达式时,它会匹配包含匹配项和任何其他字符的所有字符串。

ex:(使用与上一个示例相同的正则表达式)如果我使用 Regex 类,则以下字符串将匹配 -> 12:00、07:15、23:59 和 12: 00foo(包含匹配),bar23:00(包含匹配)。

是否有理由对它们进行不同的处理?有没有办法模仿与 RegularExpressionValidator 控件相同的行为?

提前致谢!

【问题讨论】:

    标签: c# .net asp.net regex


    【解决方案1】:

    让正则表达式精确匹配字符串的一种简单、通用的方法是强制它从字符串的开头到结尾进行匹配,如下所示:

    ^pattern$ 
    

    【讨论】:

      【解决方案2】:

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

      这就像说:

      ^(([0-1][0-9])|([2][0-3])):([0-5][0-9])$
      

      Regex Class 中的上述表达式将产生与验证器控件相同的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-12
        相关资源
        最近更新 更多