我在我的网站中使用快速安全的联系表单。在诸如姓名,电话号码,消息等所有字段中,后端允许正则表达式。正则表达式禁止http或http://
我现在遇到垃圾邮件问题,收到大量垃圾邮件。我注意到所有包含URL的消息。所以如果我禁止字符串http或http://我认为这应该阻止垃圾邮件,因为合法邮件永远不会包含URL。
我想正则表达式如下操作:如果消息包含http,则不应发送消息。我将在消息字段的正则表达式字段中输入以完成该操作?
我在我的网站中使用快速安全的联系表单。在诸如姓名,电话号码,消息等所有字段中,后端允许正则表达式。正则表达式禁止http或http://
我现在遇到垃圾邮件问题,收到大量垃圾邮件。我注意到所有包含URL的消息。所以如果我禁止字符串http或http://我认为这应该阻止垃圾邮件,因为合法邮件永远不会包含URL。
我想正则表达式如下操作:如果消息包含http,则不应发送消息。我将在消息字段的正则表达式字段中输入以完成该操作?
要匹配(不区分大小写),只有输入没有“HTTP”随时随地它:
^(?i)(?!.*http).*
如果你想更精确,让"http"
或"https"
,而不是跟着当"://"
:
^(?i)(?!.*https?://).*
这将允许像“我们专注于https协议”的文本,但仍然阻止链接。
谢谢波希米亚人,我会尝试那些。并感谢您试图保持谨慎,但我不认为任何人都会使用包含http iny消息的短语。 –
如果你想*匹配*错误的输入,改变'!'为'=' – Bohemian
所以,如果我匹配,这意味着只有当它包含http消息才会通过?另外,我会问你,如果它是大写的HTTP,我怎么能使它不区分大小写? –
如果断言不适用于您正在使用的引擎,那么您可以尝试使用旧式的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] | $)
)*
$
我试了两个。既不可用,也不会发送消息,不管它是否包含http。并且有错误消息警告:preg_match():未知修饰符'h'in ... –
@LarryAntonio - 发布代码,大到足以重现,您已经使用它显示该消息的位置。听起来像是一个分隔符问题。 – sln
谢谢,我正在使用您的较大代码。我在开始的时候出现了一个斜线,最后又出现了一个斜线,这看起来很有用。我是否通过设置斜杠来做错任何事情?我不知道我在做什么,我只是凭直觉或巧合做到这一点。 –
你能澄清你用的是什么语言的正则表达式? –