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

C# .Net 正则表达式如何仅拒绝完全由#@%组成的字符串?

你原有正则的问题

你写的^(?!(#|@|%)+$)只包含负向先行断言,仅匹配「字符串开头后面不全是#@%」的位置,没有匹配完整输入字符串。.NET数据注解的RegularExpressionAttribute要求正则完全匹配整个输入字符串才会判定校验通过,因此你的写法无法覆盖整串匹配逻辑,达不到预期效果。

可直接用于数据注解的正则表达式

^(?!([#@%])+$).*$

规则拆解

  1. ^ 匹配字符串开头
  2. (?!([#@%])+$) 负向先行断言:校验整个字符串不能仅由#、@、%三个字符任意组合构成
  3. .* 匹配任意数量的任意字符(含空串)
  4. $ 匹配字符串结尾

校验结果验证

  • ab#c → 匹配成功(允许)
  • abc#@ → 匹配成功(允许)
  • #%abc → 匹配成功(允许)
  • #@% → 匹配失败(拒绝)
  • ##@ → 匹配失败(拒绝)

如果你的业务不允许输入空串,可将正则调整为^(?!([#@%])+$).+$即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:30:01