我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 */? *a
matchn
,可选,/
周围有可选空格)$
关闭内联修饰符并断言字符串结尾
)
关闭前瞻.+
匹配任何字符 1+ 次$
断言字符串结尾
如果这也适用于 Javascript,则您可以使用字符类,因为不支持内联修饰符。
^(?!(?:[nN] *\/? *[aA])$).+$
慕姐8265434
TA贡献1813条经验 获得超2个赞
这个解决方案确实有效:
RuleFor(x => x.Question01) .Matches(@"^(?!\s*[Nn]\s*/?\s*[Aa]\s*$).*") .WithMessage("Invalid answer.");
潇潇雨雨
TA贡献1833条经验 获得超4个赞
此正则表达式将匹配 N/A、n/a、NA、na 的任何变体
忽略 N -> A 和 N -> / 和 / -> A 之间的所有空格
\s*
对于不区分大小写
?我:
最终结果:
^(?i:n\s*/?\s*a)$
- 3 回答
- 0 关注
- 135 浏览
添加回答
举报
0/150
提交
取消