You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET WebForms自定义正则验证异常问题求助

解决ASP.NET RegularExpressionValidator误触发问题

核心问题分析

你当前的验证逻辑搞反了:RegularExpressionValidator默认规则是输入匹配正则表达式时验证通过,如果你的正则是直接匹配有害字符,那么当输入无有害字符时,因不匹配正则会触发验证错误,这就是误触发的原因。

正确的正则表达式方案

需要编写一个排除所有有害字符/序列的正则,确保输入不包含>, <, /*, */, --, |, {}时验证通过,反之触发提示。正则表达式如下:

^((?!<|>|/\*|\*/|--|\||\{|\}).)*$

正则说明:

  • ^ 和 $ 限定匹配整个输入字符串
  • (?!...) 负向预查,确保后续内容不包含指定的有害项
  • 转义特殊正则字符:*、|、{、} 需要用\转义;/*和*/作为整体序列匹配
  • ((?!...).)* 允许任意字符(包括空输入),只要不触发有害项的预查

修正后的控件代码

<asp:TextBox ID="txt_comment" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator 
    ID="rev_comment" 
    runat="server" 
    ControlToValidate="txt_comment" 
    ErrorMessage="请移除以下有害字符:>, <, /*, */, --, |, {}" 
    ValidationExpression="^((?!<|>|/\*|\*/|--|\||\{|\}).)*$"
    Display="Dynamic">
</asp:RegularExpressionValidator>
<asp:Button ID="btn_submit" runat="server" Text="提交" />

额外注意事项

  • 如果不允许空输入,将正则中的*改为+,即^((?!<|>|/\*|\*/|--|\||\{|\}).)+$
  • 确保控件的ControlToValidate属性正确指向txt_comment,且无拼写错误
  • 测试时需覆盖所有场景:正常文本、含单个有害字符、含有害序列(如/*)

内容的提问来源于stack exchange,提问作者A.Mac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:00:54