如何在asp.net mvc中使用数据注释来否定RegEx匹配?

时间:2014-10-11 06:54:55

标签: c# regex asp.net-mvc data-annotations

我有这个表达

[RegularExpression(@"(https?://)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*/?", ErrorMessage = "Message cannot contain urls")]

它按预期检测到网址,但我需要它做相反的事情。 如果我不在该字段中输入网址,则验证仅警告。如果它检测到网址说不允许网址和链接,我需要它给我一个警告。

2 个答案:

答案 0 :(得分:1)

使用否定前瞻?!

例如(?!abc)

mathces hello但不匹配abc

所以你的正则表达式必须修改为

"^(?!(https?://)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*/?)$"

答案 1 :(得分:1)

^(?!.*?(https?://)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*/?).*$

试试这个。这与url不相符。参见演示。

http://regex101.com/r/vR4fY4/8