验证属性时将两个正则表达式合二为一
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][^~!@#$%&*]*)?$
。
【讨论】:
以上是关于验证属性时将两个正则表达式合二为一的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式测试作为属性的指令实现错误 - 验证(打字稿+角度)