Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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 如何使用正则表达式选择单词的一部分?_Javascript_Regex - Fatal编程技术网

Javascript 如何使用正则表达式选择单词的一部分?

Javascript 如何使用正则表达式选择单词的一部分?,javascript,regex,Javascript,Regex,我有一些文字,我想找到其中所有的电子邮件部分。然后只返回Domins部分,它应该看起来像: meth@buisness.com-->buisness.com yaourt@yoplait.fr-->oplait.fr 我试着这样做: 代码 var text=“我从meth@buisness.com(顺便说一句,我认为它的域名是buisness.com),它被发送到yaourt@yoplait.fr但是gmail.com的人说我们只能相信yaourt@cesi.fr地址”; 函数getDomai

我有一些文字,我想找到其中所有的电子邮件部分。然后只返回Domins部分,它应该看起来像:
meth@buisness.com
-->
buisness.com

yaourt@yoplait.fr
-->
oplait.fr

我试着这样做:
代码

var text=“我从meth@buisness.com(顺便说一句,我认为它的域名是buisness.com),它被发送到yaourt@yoplait.fr但是gmail.com的人说我们只能相信yaourt@cesi.fr地址”;
函数getDomainsOfEmails(文本){
var regMatch=/@([a-z]+[a-z]+)/g;
var regReturn=text.match(regMatch);
控制台日志(重新返回);
返补;
}

getDomainsOfEmails(文本)RegExp create cature组中的括号。
regexp.exec
函数返回一个数组,其中
0
是整个匹配项,然后所有其他单元格从左到右包含捕获组。因此:

var reg = /@([a-z0-9-]+\.[a-z]+)/ig;
reg.exec(text);
将在第一次呼叫时返回以下内容:

[
  0: "@yoplait.fr"
  1: "yoplait.fr"
]
如果您再次调用它,因为表达式有一个全局标志,它将得到下一个结果:

[
  0: "@buisness.com"
  1: "buisness.com"
]

但最好把它分成两部分,然后得到第二部分。试试这个我希望这是工作

(?<=@)[^.]+(?=\.).*$

(?为什么不使用您当前的方法抓取电子邮件,然后在@之后使用
splice()
?您当前的代码应该可以工作,您已经将
@
之后的部分放在括号中,因此应该将其作为匹配项返回。您得到了什么?您打印了结果了吗?yoplait中的“y”发生了什么事?
regReturn.map(x=>x.slice(1))
。小心,
匹配除换行符以外的任何字符。如果需要实际句点,则需要使用反斜杠将其转义。不幸的是,javascript不支持lookbehind。非常感谢,我终于得到了它)