Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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
Javascript 正则表达式匹配除锚标记1外的所有电子邮件_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式匹配除锚标记1外的所有电子邮件

Javascript 正则表达式匹配除锚标记1外的所有电子邮件,javascript,regex,Javascript,Regex,我需要找到所有的电子邮件地址从内容与html或没有html和需要替换为链接 我有下面的正则表达式的电子邮件地址查找和它的工作完美 以下代码:(以下以下简称::[a-z0-9-9-10-10-10-10-10-10 10-9-9-9-9-a-z0-9-10-10-9-10-10-10-9-10-10-10-10-10-9-9-9-9-9-9-10-10-5.[以下以下以下以下以下简称::::(以下以下以下以下以下简称:::(以下以下简称::::[以下以下简称::[a-a-a-a-10-10-10-

我需要找到所有的电子邮件地址从内容与html或没有html和需要替换为链接

我有下面的正则表达式的电子邮件地址查找和它的工作完美

以下代码:(以下以下简称::[a-z0-9-9-10-10-10-10-10-10 10-9-9-9-9-a-z0-9-10-10-9-10-10-10-9-10-10-10-10-10-9-9-9-9-9-9-10-10-5.[以下以下以下以下以下简称::::(以下以下以下以下以下简称:::(以下以下简称::::[以下以下简称::[a-a-a-a-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-10-9-9-9-9-9-9-9-9-9-9-9-9-9-10-10-10-9-10-10-10-10[a-z0-9-]*[a-z0-9])?\]+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\[(?:(?:(?:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]|]\]){3}(?:25[0-5]| 2[0-4][0-9]|[0-9]|[a-Z09]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]| \[\x01-\x09\x0b\x0c\x0e-\x7f])+)\)

以下是使用示例数据的演示链接:


下面是锚定标记regex
(?:(

您可以使用与

您基本上搜索3个案例:一个“a”标记、一封电子邮件和“其他”。您将捕获组分配给这3个案例中的任何一个。然后根据这些组是否为空,您可以执行不同的操作。因此,此结构:
(a_标记)|(电子邮件)|([\s\s])
(其中
[\s\s]
表示包含新行的任何字符)

应该说,顺序很重要:您希望第一个组成为快速丢弃它的“a”标记。“任意字符”(
[\s\s]
)必须是最后一个选项,因为如果它是第一个,它将匹配任何内容,并且不会给其他选项匹配任何文本的机会

const regex=/(?:(我们的网站example@gmail.com
example@gmail.com
example@gmail.com
example@gmail.com
example@gmail.com
sdfsdfexample@gmail.com
example@gmail.comSDFSDFDF`;
让m;
让acc='';
while((m=regex.exec(str))!==null){
if(typeof(m[1])!=‘未定义’){
//第一组被定义为:它将有一个';
}
否则{
//任何其他字符。我们只需添加到累加器
acc+=m[3];
}
}

控制台日志(acc);
检查这个@NishitMaheta方法的问题是,它会丢弃一些其他标签中的电子邮件,如
example@gmail.com
不仅仅是
谢谢你。像魅力一样工作。谢谢你分享教程链接。太棒了。这很有意义。我在这里更新了我的最终代码。-一些我必须在fi上采用0索引的方法其他方面,它显示为未定义。这是用于复制和粘贴的CKEditor(html编辑插件)用于替换电子邮件和链接的url。请参见此处演示:如果我做错了什么:这可能是因为您使用的regexp上有一些额外的捕获组。例如,此处:
(?:http(s)?:\/\/)?
(第三)和此处
http(s)?
(第四个)。最好使用非捕获组,而不是
(?:)
。因此,“第三个”组将是“any”字符。请参阅此处的正则表达式。它应与
m[3]
m[0]一起使用
保存最后一个匹配的项目。因此它应该与捕获组等效,因为我们捕获了所有内容。事实上,对于您的情况,您可以始终在累加器上使用
m[0]
(但是检查应该是在
m[1]
m[2]
)……但是,我只是觉得检查
m[1]
然后使用
m[0]
不太“自然”。所以我总是使用
m[1],m[2],m[3]
作为累加器