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

C#正则表达式:如何通过ViewModel的RegularExpression属性实现5个不含o/i(大小写)的字母数字字符验证

搞定C#正则表达式:5位字母数字且排除i/o(大小写)

嘿,不用写自定义验证函数,把两个规则整合到一个正则里就搞定了!你需要的表达式是:

@"^[a-hj-np-zA-HJ-NP-Z0-9]{5}$"

拆解一下这个正则的逻辑:

  • ^ 和 $ 锚定整个字符串,确保输入正好是5个字符(不会多也不会少)
  • 字符集 [a-hj-np-zA-HJ-NP-Z0-9] 精准过滤了i和o:
    • 小写部分:a-h(跳过i)、j-n(跳过o)、p-z(剩下的小写字母)
    • 大写部分:A-H(跳过I)、J-N(跳过O)、P-Z(剩下的大写字母)
    • 0-9:保留所有数字

直接把它用到你的ViewModel属性上就行,完整代码示例:

using System.ComponentModel.DataAnnotations;

public class YourViewModel
{
    [RegularExpression(@"^[a-hj-np-zA-HJ-NP-Z0-9]{5}$", 
        ErrorMessage = "*It must contain 5 letters or numbers, no 'i'/'I' or 'o'/'O'.")]
    public string TargetProperty { get; set; }
}

为啥之前的写法不生效?

  • 你第一个表达式 [a-zA-Z0-9]{5} 虽然限定了长度和字符类型,但没排除i/o;而且要注意,RegularExpression特性默认要求匹配整个字符串,但字符集不对的话还是过不了
  • 第二个表达式 [^ioIO] 只是排除了特定字符,但没限定长度,而且如果不加锚点的话,只要输入里有一个字符不是i/o就会匹配,完全不符合“正好5个有效字符”的要求

这样整合之后,就同时满足了所有规则:必须5位,只能是字母数字,绝对不含大小写的i和o。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:43:12