ASP.NET正则表达式需求:允许指定字符并禁止输入http/www网址
嘿,我来帮你搞定这个正则表达式的问题!结合你用ASP.NET 4.5和Bootstrap的场景,咱们直接针对你的需求来调整规则,分两步实现:既要允许指定的字符集,又要把http/www这类内容拦下来。
解决方案
核心要实现两个需求:
- 仅放行字符集:
a-zA-Z0-9_. /,&|()!- - 绝对禁止出现
http或www字符串
最终正则表达式
这里用负向前瞻来实现“禁止特定子串”的逻辑,同时确保整个输入都符合允许的字符规则,最终正则如下:
^(?!.*(http|www))[a-zA-Z0-9_. /,&|()!-]+$
正则规则拆解
^(?!.*(http|www)):负向前瞻断言,扫描整个字符串,只要发现http或www就直接判定无效[a-zA-Z0-9_. /,&|()!-]+:匹配你允许的所有字符,+表示输入至少要有一个字符(如果允许空输入,把+改成*即可)$:锚定字符串结尾,确保整个输入内容都符合规则,不会出现漏网的非法字符
在ASP.NET 4.5中的应用示例
服务器端验证(用RegularExpressionValidator)
如果是用ASP.NET自带的验证控件,直接把正则配置进去就行,结合Bootstrap的样式也很方便:
<asp:TextBox ID="txtUserInput" runat="server" CssClass="form-control"></asp:TextBox> <asp:RegularExpressionValidator ID="revUserInput" runat="server" ControlToValidate="txtUserInput" ValidationExpression="^(?!.*(http|www))[a-zA-Z0-9_. /,&|()!-]+$" ErrorMessage="输入内容不符合要求:仅允许a-zA-Z0-9_. /,&|()!-字符,且不能包含http或www" CssClass="text-danger mt-1" Display="Dynamic"> </asp:RegularExpressionValidator>
前端Bootstrap验证(结合jQuery Validate)
如果要做前端即时验证,给jQuery Validate加个自定义规则就行:
// 自定义验证方法 $.validator.addMethod('validInputRule', function(value, element) { const regex = /^(?!.*(http|www))[a-zA-Z0-9_. /,&|()!-]+$/; // 允许空输入的话就保留this.optional(element),否则去掉 return this.optional(element) || regex.test(value); }, '输入内容不符合要求:仅允许a-zA-Z0-9_. /,&|()!-字符,且不能包含http或www'); // 绑定到表单 $('#yourFormId').validate({ rules: { txtUserInput: { validInputRule: true } }, errorClass: 'text-danger' });
额外提示
- 如果需要不区分大小写拦截(比如
HTTP、WWW也不让过),给正则加上不区分大小写标志i,变成:/^(?!.*(http|www))[a-zA-Z0-9_. /,&|()!-]+$/i - 字符集里的
-放在末尾是为了避免被当成“范围符号”,如果要调整位置,记得转义成\-
内容的提问来源于stack exchange,提问作者Etienne
相关产品推荐
相关产品推荐

