我在我的网站上使用快速安全的联系方式。在所有字段中,如姓名、电话号码、消息,后端都允许使用正则表达式。
现在我有一个垃圾邮件的问题,得到一吨的垃圾邮件。我注意到所有进来的消息都包含一个URL。因此,如果我禁止字符串http或http://,我认为这应该会阻止垃圾邮件,因为合法消息永远不会包含URL。
我希望正则表达式的行为如下:如果消息包含http,则不应发送该消息。我应该在Regex字段中为message字段输入什么内容才能完成此操作?
发布于 2017-03-18 08:16:45
要匹配(不区分大小写)任何位置都不带"http“的输入:
^(?i)(?!.*http).*如果您想要更精确,则允许使用"http"或"https",但不允许后面跟"://"
^(?i)(?!.*https?://).*这将允许像“我们专攻https协议”这样的文本,但仍然阻止链接。
发布于 2017-03-18 13:47:22
如果断言不适用于您正在使用的引擎,那么有一个旧的
你可以试试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] | $ )
)*
$https://stackoverflow.com/questions/42868945
复制相似问题