求仅校验URL字符串非法字符、无需验证http/https的正则表达式
仅校验URL非法字符的正则表达式方案
核心逻辑
基于RFC 3986 URI通用规范的允许字符范围设计,完全不包含http/https协议头校验逻辑,只做字符合法性校验。
常用正则
- 匹配非法字符(命中即存在非法字符,适合筛查非法内容):
[^a-zA-Z0-9\-._~:/?#\[\]@!$&'()*+,;=%] - 全量校验整个URL仅包含合法字符(完全匹配才为合法):
^[a-zA-Z0-9\-._~:/?#\[\]@!$&'()*+,;=%]*$
自定义调整方式
你可以根据自己的业务需求灵活修改字符集范围:
- 不需要允许某类合法字符:直接把对应符号从
[]字符集中删除即可,比如不需要允许$就删掉字符集中的$ - 需要允许中文URL:在字符集中加入
\u4e00-\u9fa5 - 仅校验域名部分:删除路径、参数相关的特殊符号,只保留字母、数字、
-、.即可,对应正则为^[a-zA-Z0-9\-.]*$
内容的提问来源于stack exchange,提问作者Purni
相关产品推荐
相关产品推荐

