带有正则表达式的 FluentValidation 不允许 N/A 或 NA 忽略大小写和白色 Space
FluentValidation with Regular Expression not allowing N/A or NA Ignoring Case and White Space
我在我的 ASP.NET MVC 应用程序中使用 FluentValidation
,并且在某些字段中不允许用户输入 N/A
及其变体。
我发现 Tim 在 SO question 中的回答有些帮助,但不完全是我要找的。它确实有效,但我不想使用 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
等
如果您想精确匹配这些值并且不允许混合大小写的组合,您可以使用 alternation.
列出它们
注意 \s
也匹配换行符。
如果你想允许除此模式之外的所有模式,你可以使用否定先行 (?!
来断言右边的不是此模式和内联修饰符 (?i)
或 (?i:
^(?!(?i:n */? *a)$).+$
^
字符串开头
(?!
否定前瞻,断言右边的不是
(?i:
不区分大小写匹配的内联修饰符
n */? *a
匹配 n
,可选 /
包围可选空格
)$
关闭内联修饰符并断言字符串结束
)
关闭前瞻
.+
匹配任意字符 1+ 次
$
断言字符串结束
如果这也适用于 Javascript,您可以使用字符 class,因为不支持内联修饰符。
^(?!(?:[nN] *\/? *[aA])$).+$
此正则表达式将匹配 N/A、n/a、NA、na
的任何变体
忽略 N -> A 和 N -> / 和 / -> A 之间的所有空格
\s*
不区分大小写
?i:
最终结果:
^(?i:n\s*/?\s*a)$
这个解决方案确实有效:
RuleFor(x => x.Question01)
.Matches(@"^(?!\s*[Nn]\s*/?\s*[Aa]\s*$).*")
.WithMessage("Invalid answer.");
我在我的 ASP.NET MVC 应用程序中使用 FluentValidation
,并且在某些字段中不允许用户输入 N/A
及其变体。
我发现 Tim 在 SO question 中的回答有些帮助,但不完全是我要找的。它确实有效,但我不想使用 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
等
如果您想精确匹配这些值并且不允许混合大小写的组合,您可以使用 alternation.
列出它们注意 \s
也匹配换行符。
如果你想允许除此模式之外的所有模式,你可以使用否定先行 (?!
来断言右边的不是此模式和内联修饰符 (?i)
或 (?i:
^(?!(?i:n */? *a)$).+$
^
字符串开头(?!
否定前瞻,断言右边的不是(?i:
不区分大小写匹配的内联修饰符n */? *a
匹配n
,可选/
包围可选空格)$
关闭内联修饰符并断言字符串结束
)
关闭前瞻.+
匹配任意字符 1+ 次$
断言字符串结束
如果这也适用于 Javascript,您可以使用字符 class,因为不支持内联修饰符。
^(?!(?:[nN] *\/? *[aA])$).+$
此正则表达式将匹配 N/A、n/a、NA、na
的任何变体忽略 N -> A 和 N -> / 和 / -> A 之间的所有空格
\s*
不区分大小写
?i:
最终结果:
^(?i:n\s*/?\s*a)$
这个解决方案确实有效:
RuleFor(x => x.Question01)
.Matches(@"^(?!\s*[Nn]\s*/?\s*[Aa]\s*$).*")
.WithMessage("Invalid answer.");