【问题标题】:What am I doing wrong in RegularExpressionValidator on a Multiline Textbox with Validation Expression?我在带有验证表达式的多行文本框上的 RegularExpressionValidator 做错了什么?
【发布时间】:2012-11-19 07:06:24
【问题描述】:
<asp:RegularExpressionValidator id="EmailLinkValidator" runat="server"
     controltovalidate="TextBox1" display="Dynamic" 
     ValidationExpression="?m:(^(?:(?:<a )?href|</a>\r?\n?)+)" 
     cssclass="clsError" errormessage="<%=this.ERR_MSG%>">*
</asp:RegularExpressionValidator>

我正在尝试验证多行文本框,以检查输入的值是否有任何匹配的字符串,如 HREFhref&lt;A HREF&lt;a href&lt;/A&gt;&lt;/a&gt;。如果是这样,我需要给出错误消息。我做错了什么?

这是我更新的内容

ValidationExpression="(?m:(^(?:(?:<a )?href|</a>\r?\n?)+))"

【问题讨论】:

  • 在我关于正则表达式的每一次讲座或教程中,我总是强调你需要根据多个预期输入来验证你的模式,包括正确和不正确的输入。您能否提供一些您期望的正确和不正确的输入,以便我为您提供建议?但是,仅基于我认为您想要的,您将执行 {a[^>]*href[^>]*>}。此外,您的第三个示例似乎包含一个 HTML 分隔符,因此它没有显示出来。小心点。

标签: regex multilinestring


【解决方案1】:

您似乎有一个内联m 多行 模式(?m: modifier grouping),它的外括号被截断。试试:

ValidationExpression="(?m:(^(?:(?:<a )?href|</a>\r?\n?)+))"  

【讨论】:

  • @Suamere - 基本上我有一个多行文本框,我们可以在其中输入 HTML 标签。但我不应该允许用户在这个文本框中输入任何链接。我正在对常规 HTML 标签进行清理。但不检查任何 HREF 标记。因此,如果用户正在输入任何 HREF 标签,那么我应该阻止他们输入。所以我假设用户会输入:。希望这可以帮助。请告诉我。
  • 这仍然不起作用。我的 HREF 标签可能在中间,而不仅仅是在开头..
  • 有人可以帮忙吗?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 2022-07-27
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
相关资源
最近更新 更多