我有一个带有联系表格的MVC项目。我试图通过使用自定义验证器阻止将链接添加到消息框中,http
,https
或www
。
我已完成以下操作以防止添加链接:
[RegularExpression(@"^/(?!http|https|www)([a-z0-9]+)$", ErrorMessage ="You cannot insert links into the message")]
[Required (ErrorMessage = "Your message cannot be left blank")]
public string inputMessage
{
get; set;
}
但这只是一种工作。它会阻止链接,如果消息的开头是其中任何一个,但如果消息包含由链接跟踪的消息,则它不起作用
我已经使用https://regexr.com/尝试了一些事情,但由于我不太了解正则表达式,所有尝试都失败了。
我想我也发现上面的正则表达式不允许使用标点符号,所以考虑到第一个问题,我还添加了一些常见的标点符号^(?!http|https|www)([A-Za-z0-9 .,!?£%&])\w+$
,但这似乎没有做到这一点。
如何允许邮件通过验证,而不允许在邮件中的任何位置添加以http
,https
或www
开头的链接。
一些例子:
您好。我只是想知道等等等等等等等等?谢谢!
应通过验证
您好。我只是想知道等等等等等等等等?该链接是www.google.com。谢谢!
不应通过验证
www.google.com
不应通过验证
编辑:P.S它不需要检查它是否是有效的URL,只要输入的任何地方包含http,https或www。除此之外,它应该通过验证
答案 0 :(得分:1)
试试这个
^((?!(www|http)).)*$
从字符串的开头起,贪婪的负面观察背后会寻找与 http 或 www 不同的内容,然后是字符串的结尾。