验证属性时将两个正则表达式合二为一

Posted

技术标签:

【中文标题】验证属性时将两个正则表达式合二为一【英文标题】:Combine two regular expression into one while validating Attribute 【发布时间】:2019-07-13 19:41:00 【问题描述】:

我有两个正则表达式。

    [RegularExpression(@".*[^ ].*", ErrorMessage ="Something")] 验证仅包含空格的字符串(不包含任何其他字符 例如:" ".length = 7)。 [RegularExpression(@"^[^~!@#$%&*]+$", ErrorMessage = "something")] 验证包含 ~!@#$%&* 特殊字符的字符串。

如何将两个正则表达式合二为一,因为在 asp.net mvc 中不允许重复正则表达式注释。

【问题讨论】:

@".*[^ ].*" :用于空间验证,我正在使用 是什么阻止您在第二个表达式中添加空格?你想让~!@#$%& 都无效,对吧? 我没有得到你。第二个选项? 我猜像@"^(?=.*[^ ])[^~!@#$%&*]+$" 这样的东西应该可以工作。 C# string should not contain only white spaces or any special character except ,.';:"的可能重复 【参考方案1】:

你可以使用

^[^~!@#$%&*]*[^~!@#$%&*\s][^~!@#$%&*]*$

见regex demo

详情

^ - 字符串开头 [^~!@#$%&*]* - ~!@#$%&* 列表中除 char 之外的 0+ 个字符 [^~!@#$%&*\s] - ~!@#$%&* 列表和空格中的字符以外的字符 [^~!@#$%&*]* - ~!@#$%&* 列表中除字符外的 0+ 个字符 $ - 字符串结束。

注意:为了还允许空字符串,您需要在可选组内的锚点之间包装模式:^(?:[^~!@#$%&*]*[^~!@#$%&*\s][^~!@#$%&*]*)?$

【讨论】:

以上是关于验证属性时将两个正则表达式合二为一的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式验证属性无法正常工作

正则表达式测试作为属性的指令实现错误 - 验证(打字稿+角度)

jqueryvalidation - 无法验证正则表达式

自定义正则表达式不在客户端验证

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

[Java]Java 版正则表达式