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

如何编写C#正则表达式:允许指定字符但禁止重复斜杠

修改后的正则表达式

直接替换原正则即可,两种写法逻辑等价,任选其一:

写法一(结构清晰,易读性高):

var objectKeyRegex = new Regex(@"^(?:[a-zA-Z0-9!.*'()_-]+|\/(?!\/))*$");

写法二(紧凑简洁):

var objectKeyRegex = new Regex(@"^(?:(?!\/\/)[a-zA-Z0-9!.*'()_/-])*$");
改动逻辑说明

原正则把/和其他合法字符放在同一字符集,导致允许连续匹配多个/。要实现需求,核心是确保永远不会出现两个及以上的/连在一起,同时保留单个/的合法性,且不限制其他合法字符的使用。

写法一拆解:

  • [a-zA-Z0-9!.*'()_-]+:匹配一段不含斜杠的合法字符(至少1个)
  • \/(?!\/):匹配单个斜杠,通过(?!\/)负向预查确保当前斜杠后不会紧跟另一个斜杠
  • (?:...|...)*:将上述两种模式组合,允许任意次数重复(包括零次),覆盖所有合法的字符组合场景

写法二拆解:

  • (?!\/\/):负向预查,检查当前位置开始的两个字符不是//
  • [a-zA-Z0-9!.*'()_/-]:匹配单个合法字符
  • ^(?:...)*$:让上述组合覆盖整个字符串,从根源上杜绝连续斜杠的出现
验证用例
  • 合法匹配:abc123!_.-(/'*、a/b/c、/start、end/
  • 非法匹配:a//b、///test、abc//

内容的提问来源于stack exchange,提问作者JHJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:47:05