首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex禁止http或http://

Regex禁止http或http://
EN

Stack Overflow用户
提问于 2017-03-18 08:13:46
回答 2查看 139关注 0票数 1

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

现在我有一个垃圾邮件的问题,得到一吨的垃圾邮件。我注意到所有进来的消息都包含一个URL。因此,如果我禁止字符串http或http://,我认为这应该会阻止垃圾邮件,因为合法消息永远不会包含URL。

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

EN

回答 2

Stack Overflow用户

发布于 2017-03-18 08:16:45

要匹配(不区分大小写)任何位置都不带"http“的输入:

代码语言:javascript
复制
^(?i)(?!.*http).*

如果您想要更精确,则允许使用"http""https",但不允许后面跟"://"

代码语言:javascript
复制
^(?i)(?!.*https?://).*

这将允许像“我们专攻https协议”这样的文本,但仍然阻止链接。

票数 0
EN

Stack Overflow用户

发布于 2017-03-18 13:47:22

如果断言不适用于您正在使用的引擎,那么有一个旧的

你可以试试posix风格的技巧。

这只是为了防止http:。如果您想防范http://,请添加

它们的两个额外的/交替集。

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

扩展(查看它是什么)

代码语言:javascript
复制
 ^ 
 (?:
      [^h]
   |  
      http
      (?: [^:] | $ )
   |  
      htt
      (?: [^p] | $ )
   |  
      ht
      (?: [^t] | $ )
   |  
      h
      (?: [^t] | $ )
 )*
 $

如果你的引擎不支持不区分大小写,这个更大的版本

应该行得通。

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

扩展

代码语言:javascript
复制
 ^ 
 (?:
      [^hH] 
   |  
      [hH] [tT] [tT] [pP] 
      (?: [^:] | $ )
   |  
      [hH] [tT] [tT] 
      (?: [^pP] | $ )
   |  
      [hH] [tT] 
      (?: [^tT] | $ )
   |  
      [hH] 
      (?: [^tT] | $ )
 )*
 $
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42868945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档