将Regex用于自定义验证程序,以防止在联系表单/输入中输入URL

时间:2018-04-17 12:16:17

标签: regex model-view-controller

我有一个带有联系表格的MVC项目。我试图通过使用自定义验证器阻止将链接添加到消息框中,httphttpswww

我已完成以下操作以防止添加链接:

[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+$,但这似乎没有做到这一点。

如何允许邮件通过验证,而不允许在邮件中的任何位置添加以httphttpswww开头的链接。

一些例子:

  

您好。我只是想知道等等等等等等等等?谢谢!

应通过验证

  

您好。我只是想知道等等等等等等等等?该链接是www.google.com。谢谢!

不应通过验证

  

www.google.com

不应通过验证

编辑:P.S它不需要检查它是否是有效的URL,只要输入的任何地方包含http,https或www。除此之外,它应该通过验证

1 个答案:

答案 0 :(得分:1)

试试这个

^((?!(www|http)).)*$

从字符串的开头起,贪婪的负面观察背后会寻找与 http www 不同的内容,然后是字符串的结尾。