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

如何用正则验证以#/开头的URL路径并排除特殊字符?

正则表达式需求:匹配仅含字母的#/开头路径

我想要编写一个以“#/”开头的正则表达式,仅接受由大小写字母(A-Z/a-z)组成的路径,不允许数字或特殊字符。

有效路径示例:

#/
#/word/word
#/word
#/word/word/word

目前我尝试了以下正则表达式:

#\/\D+|\/\D+

还试过:

#\/\D+|\s\/^[A-Za-z\s]*$

该正则能过滤85%的路径,但仍会将带特殊字符的路径(如“#/word/word?test=word”“#/word/word=%”)判定为有效,我不清楚问题出在哪里。


你的问题核心是现有正则没做全字符串范围限定,也没精准锁定合法字符:

  1. \D+会匹配所有非数字字符(包括?、=这类特殊符号),所以带特殊字符的路径会被误判。
  2. 正则里的|逻辑混乱,且没加^和$锚定首尾,导致只要字符串里有符合片段就会被判定有效。

给你两个精准的正则方案:

方案1:兼容空结尾(支持单独#/)

^#\/(?:[A-Za-z]+\/)*[A-Za-z]*$
  • ^ 强制字符串必须以#/开头
  • (?:[A-Za-z]+\/)* 匹配0次或多次“字母+斜杠”组合(比如word/),?:是无捕获组,不额外占用匹配内存
  • [A-Za-z]* 匹配0个或多个字母(对应#/或#/word这类结尾情况)
  • $ 强制字符串结尾不能有任何额外字符

方案2:要求至少含一个字母(排除单独#/)

^#\/[A-Za-z]+(?:\/[A-Za-z]+)*$

验证效果

  • 匹配成功:#/、#/word、#/word/word
  • 匹配失败:#/word?test、#/word=123、#/word%

内容的提问来源于stack exchange,提问作者Jessica M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:15:35