Javascript 如何使用正则表达式选择单词的一部分?
我有一些文字,我想找到其中所有的电子邮件部分。然后只返回Domins部分,它应该看起来像: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
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。非常感谢,我终于得到了它)