为了账号安全,请及时绑定邮箱和手机立即绑定

使用正则表达式的 FluentValidation 不允许 N/A 或 NA 忽略大小写和空格

使用正则表达式的 FluentValidation 不允许 N/A 或 NA 忽略大小写和空格

C#
长风秋雁 2023-09-16 16:11:05
我FluentValidation在 ASP.NET MVC 应用程序和某些字段中使用不允许用户输入N/A及其变体。我发现蒂姆在这个问题中的回答有些帮助,但不完全是我想要的。它确实有效,但我不想使用RegexOptions.IgnoreCase像这样的选项进行验证似乎只发生在服务器端。RuleFor(x => x.Question01)     .Matches(@"^(?!\s*n\s*/?\s*a\s*$).*", RegexOptions.IgnoreCase)     .WithMessage("Invalid answer.");我正在寻找一个纯正则表达式解决方案(不使用RegexOptions.IgnoreCase),忽略大小写和空格以允许除N/A, N / A, NA, N A, n/a, n / a, na,n a等之外的任何内容。
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

如果您想完全匹配这些值并且不允许大小写混合的组合,您可以使用 alternation 将它们全部列出。

请注意\s它也匹配换行符。

如果您想允许除此模式之外的所有模式,您可以使用负前瞻(?!来断言右侧的不是此模式和内联修饰符(?i)(?i:

^(?!(?i:n */? *a)$).+$
  • ^字符串的开头

  • (?!负向前看,断言右边的不是

    • (?i:不区分大小写匹配的内联修饰符

    • n */? *amatch n,可选,/周围有可选空格

    • )$关闭内联修饰符并断言字符串结尾

  • )关闭前瞻

  • .+匹配任何字符 1+ 次

  • $断言字符串结尾

.NET 正则表达式演示

如果这也适用于 Javascript,则您可以使用字符类,因为不支持内联修饰符。

^(?!(?:[nN] *\/? *[aA])$).+$

正则表达式演示


查看完整回答
反对 回复 2023-09-16
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

这个解决方案确实有效:

RuleFor(x => x.Question01)
    .Matches(@"^(?!\s*[Nn]\s*/?\s*[Aa]\s*$).*")
    .WithMessage("Invalid answer.");


查看完整回答
反对 回复 2023-09-16
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

此正则表达式将匹配 N/A、n/a、NA、na 的任何变体

忽略 N -> A 和 N -> / 和 / -> A 之间的所有空格

\s*

对于不区分大小写

?我:

最终结果:

^(?i:n\s*/?\s*a)$


查看完整回答
反对 回复 2023-09-16
  • 3 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信