Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex用于过滤URL中的电子邮件地址_Regex_Perl_Akamai - Fatal编程技术网

Regex用于过滤URL中的电子邮件地址

Regex用于过滤URL中的电子邮件地址,regex,perl,akamai,Regex,Perl,Akamai,我需要过滤掉我们的url中任何有电子邮件地址或任何类型的个人信息的垃圾邮件请求 例如:如果有人输入url www.mydomain.com/en us?电子邮件=abc@gmail.com 它应该重定向到 www.mydomain.com/en us?电子邮件= [使用正则表达式匹配电子邮件的模式并将其删除] 基本上,它应该保持url不变并删除emailaddress 另一个例子 重定向 www.mydomain.com/en-us/sompePage/SomeStructure?query=a

我需要过滤掉我们的url中任何有电子邮件地址或任何类型的个人信息的垃圾邮件请求

例如:如果有人输入url

www.mydomain.com/en us?电子邮件=abc@gmail.com

它应该重定向到

www.mydomain.com/en us?电子邮件=

[使用正则表达式匹配电子邮件的模式并将其删除] 基本上,它应该保持url不变并删除emailaddress

另一个例子

重定向

www.mydomain.com/en-us/sompePage/SomeStructure?query=abc.gmail.com

www.mydomain.com/en us/sompePage/SomeStructure?查询=

这就是我所尝试的:

(http | https)://mydomain.com/(^((?!\)[\w-.]*[^.])(@\w+(\.\w+)(\.\w+)[^.\w])$
但是抛出了一个错误 背景故事和推理,如果感兴趣

我们查看了google analytics,发现我们的网站正在使用带有随机查询字符串的随机电子邮件地址。但google将其标记为存储个人信息,因此将其视为违反策略。Sl我们正在尝试在akamai中放置一些正则表达式,以便这些请求不会命中服务器。
(我们还有一个后备javascript来处理相同的问题)

您的示例不太擅长解释问题。主要问题是如何识别要删除的“邮件”

我会采取其他方法:

use strict;
use warnings;

use Data::Dumper;

my $debug = 0;

my %url;

while( <DATA> ) {
    print if $debug;

    chomp;

    m|(https{0,1})://([\w\d\.]+)/(.*)\?(.*)|;

    @url{qw(proto dn path query)} = ($1,$2,$3,$4);

    print Dumper(\%url) if $debug;

    # now do whatever your heart desire with $url{query}

    $url{query} =~ /(.*=)/;
    $url{query} = $1;

    print Dumper(\%url) if $debug;

    printf "%s://%s/%s/%s\n",
                $url{proto},    # protocol
                $url{dn},       # domain name
                $url{path},     # directory path
                $url{query};    # query

}

__DATA__
http://www.example.org/en-us?email=abc@gmail.com
https://www.example.org/en-us/sompePage/SomeStructure?query=abc.gmail.com
使用严格;
使用警告;
使用数据::转储程序;
我的$debug=0;
我的%url;
而(){
如果$debug,则打印;
咀嚼;
(https{0,1}):/([\w\d\.]+)/(.*)?(.*);
@url{qw(proto-dn-path查询)}=($1,$2,$3,$4);
如果$debug,则打印转储程序(\%url);
#现在用$url{query}做你心中想做的事
$url{query}=~/(.*=)/;
$url{query}=$1;
如果$debug,则打印转储程序(\%url);
printf“%s://%s/%s/%s/%s\n”,
$url{proto},#协议
$url{dn},#域名
$url{path},#目录路径
$url{query};#query
}
__资料__
http://www.example.org/en-us?email=abc@gmail.com
https://www.example.org/en-us/sompePage/SomeStructure?query=abc.gmail.com

我再次阅读了您的问题,并意识到akamai可能只允许对正则表达式进行修改,不包括完整的perl脚本

那么您可能需要的是
s |=.*.\124;=.
s/=.*/=

use strict;
use warnings;

while( <DATA> ) {
    s|=.*|=|;
    print;
}

__DATA__
www.mydomain.com/en-us?email=abc@gmail.com
www.mydomain.com/en-us/sompePage/SomeStructure?query=abc.gmail.com
使用严格;
使用警告;
而(){
s |=*|=|;
印刷品;
}
__资料__
www.mydomain.com/en us?电子邮件=abc@gmail.com
www.mydomain.com/en-us/sompePage/SomeStructure?query=abc.gmail.com
但同样,此方法不会在查询中识别电子邮件。您的问题不完整,无法对问题做出全面判断


您可以尝试
s/[\w\d\-]+@[\w\d\.]+/
作为电子邮件匹配替换正则表达式。

的代码包含一个。它比大多数人认为的要复杂得多:-)

编辑:

仔细看,我忘了我们已经添加了正则表达式匹配。我们的正则表达式引擎默认为PCRE语法,因此理论上可以在整个查询字符串中进行全面匹配:

提交之前,请在临时平台上进行双重检查和测试。再检查一下正则表达式。这是我自己拿的,没有亲自测试

原件:

通过Akamai,Property Manager工具允许您使用新规则执行此操作。在部署之前,您应该检查文档和测试,或者咨询您的客户团队以了解更具体的问题

在规则中,您需要为查询字符串添加匹配项,如下所示:

在此基础上,添加行为,让Akamai平台实现您想要的功能。如果它是一个简单的重定向,那么您可以使用重定向行为并完全删除查询字符串。大概是这样的:


正如信息框所说,使用Redirector Cloudlet可以更好地处理这个特定用例。但是,一旦匹配了该查询字符串,就可以执行许多操作。

不确定混淆的地方是什么。我只想从url中删除电子邮件id。url的其余部分保持不变。我正在试图找到可以在URL中找到电子邮件的正则表达式。您在查询中还有其他参数吗?你打算用它们做什么?请参见上面的
s/[\w\d\.\-]@[\w\d\.\*]/
如果没有提供其他参数,则应删除电子邮件地址。否则,您需要在电子邮件之后提供一些“stop”,这个“stop”可能是&symbol(您需要查看它在查询中的编码方式)。例如,
abc.gmail.com
与电子邮件地址不匹配(电子邮件应为user@domain其中用户可以包括字母/数字//-和域字母/数字/-)。请检查以下有关电子邮件地址验证的信息。具体而言,您应该参考电子邮件地址“规范”。对不起,在之前的回复中,请阅读
s/[\w\d\.-]+@[\w\d\.]+/