正则表达式禁止http或http://

时间:2017-03-18 00:13:46

标签: regex

我在我的网站上使用快速安全的联系表格。在名称,电话号码,消息等所有字段中,后端允许使用正则表达式。

目前我遇到垃圾邮件问题,收到大量垃圾邮件。我注意到所有收到的邮件都包含一个URL。所以如果我禁止字符串http或http://我认为应该停止垃圾邮件,因为合法邮件永远不会包含URL。

我希望正则表达式的行为如下:如果消息包含http,则不应发送消息。我将在Regex字段中为消息字段输入什么来完成该操作?

2 个答案:

答案 0 :(得分:0)

匹配(不区分大小写)仅输入而不用" http"其中的任何地方:

^(?i)(?!.*http).*

如果您想要更精确,请允许"http""https",而不是"://"后跟注:

^(?i)(?!.*https?://).*

这将允许像#34;我们专注于https协议",但仍然阻止链接。

答案 1 :(得分:0)

如果断言对您正在使用的引擎不起作用,则有一个旧的
你可以尝试posix风格的技巧。

这只能防范http:。如果你想防范http://添加
为他们增加了两个/个替换集。

^(?:[^h]|http(?:[^:]|$)|htt(?:[^p]|$)|ht(?:[^t]|$)|h(?:[^t]|$))*$

扩展(看看它是什么)

 ^ 
 (?:
      [^h]
   |  
      http
      (?: [^:] | $ )
   |  
      htt
      (?: [^p] | $ )
   |  
      ht
      (?: [^t] | $ )
   |  
      h
      (?: [^t] | $ )
 )*
 $

如果你的发动机也不支持不区分大小写,那么这个更大的版本
应该管用。

^(?:[^hH]|[hH][tT][tT][pP](?:[^:]|$)|[hH][tT][tT](?:[^pP]|$)|[hH][tT](?:[^tT]|$)|[hH](?:[^tT]|$))*$

扩展

 ^ 
 (?:
      [^hH] 
   |  
      [hH] [tT] [tT] [pP] 
      (?: [^:] | $ )
   |  
      [hH] [tT] [tT] 
      (?: [^pP] | $ )
   |  
      [hH] [tT] 
      (?: [^tT] | $ )
   |  
      [hH] 
      (?: [^tT] | $ )
 )*
 $