如何从电子邮件地址中检索姓名
How to retrieve Name from Email Address
使用javascript,我们如何从字符串中删除@gmail.com或@aol.com,以便只剩下名称?
var string = "johndoe@yahoo.com";
会只是"johdoe"吗?我试过分开,但结果不好。谢谢
var email = "john.doe@example.com";
var name = email.substring(0, email.lastIndexOf("@"));
var domain = email.substring(email.lastIndexOf("@") +1);
console.log( name ); // john.doe
console.log( domain ); // example.com
以上内容也适用于包含@
的有效名称(tools.ietf.org/html/rfc36Page5):
john@doe
"约翰;。doe
"j@hn";.d@e
- String.protype.substring()
- String.protype.lastIndexOf()
使用RegExp:
如果电子邮件值已经验证,String.protype.match()可以用来检索所需的名称,domain:
字符串匹配:
const name = email.match(/^.+(?=@)/)[0];
const domain = email.match(/(?<=.+@)[^@]+$/)[0];
捕获组:
const name = email.match(/(.+)@/)[1];
const domain = email.match(/.+@(.+)/)[1];
要在数组中获得两个片段,请使用String.protype.split()在最后一个@
字符处拆分字符串:
const [name, domain] = email.split(/(?<=^.+)@(?=[^@]+$)/);
console.log(name, domain);
或者简单地使用CCD_ 3
下面是一个使用可重用函数getEmailFragments( String )
的示例
const getEmailFragments = (email) => email.split(/@(?=[^@]*$)/);
[ // LIST OF VALID EMAILS:
`info@example.com`,
`john@doe@example.com`,
`"john@@".doe@example.com`,
`"j@hn".d@e@example.com`,
]
.forEach(email => {
const [name, domain] = getEmailFragments(email);
console.log("DOMAIN: %s NAME: %s ", domain, name);
});
您应该注意,一个有效的电子邮件地址是一个极其复杂的对象,可能包含多个@
符号(参考。http://cr.yp.to/im/address.html)。
"地址的域部分是最后一个
@
之后的所有内容。"
因此,你应该做一些等效的事情:
var email = "johndoe@yahoo.com";
var name = email.substring(0, email.lastIndexOf("@"));
或者甚至更短的
var name = email.replace(/@[^@]+$/, '');
如果您想要名称和域/主机名,那么这将起作用:
var email = "johndoe@yahoo.com";
var lasta = email.lastIndexOf('@');
var name, host;
if (lasta != -1) {
name = email.substring(0, lasta);
host = email.substring(lasta+1);
/* automatically extends to end of string when 2nd arg omitted */
} else {
/* respond to invalid email in some way */
}
还有另一个使用拆分的替代方案:
var email = "john.doe@email.com";
var sp = email.split('@');
console.log(sp[0]); // john.doe
console.log(sp[1]); // email.com
尝试使用substring()
和indexOf()
var name = email.substring(0, email.indexOf("@"));
var email = "johndoe@yahoo.com";
email=email.replace(/@.*/,""); //returns string (the characters before @)
您可以尝试使用replace()和正则表达式。你可以在这里阅读更多关于使用regex替换()的信息
var myEmail = 'johndoe@yahoo.com';
var name= myEmail.replace(/@.*/, "");
console.log(name);
这将返回@
如如何在Javascript中从电子邮件地址中删除或获取域名?中所示?,你可以使用以下代码:
const getDomainFromEmail = email => {
let emailDomain = null;
const pos = email.search('@'); // get position of domain
if (pos > 0) {
emailDomain = email.slice(pos+1); // use the slice method to get domain name, "+1" mean domain does not include "@"
}
return emailDomain;
};
const yourEmail = "jonth.nt49@4codev.com"
console.log(getDomainFromEmail(yourEmail));
// result : 4codev.com
这个简单的正则表达式将完成所需的操作/^.*(?=@)/g
。
示例:
"johndoe@yahoo.com".match(/^.*(?=@)/g); // returns Array [ "johndoe" ]
相关文章:
- 使用正则表达式评估电子邮件地址时出现性能问题
- 根据部门用户的选择,接收来自多个电子邮件地址的Wordpress Contactform7查询
- 电子邮件地址验证但创建帐户,即使电子邮件地址无效
- 如何在实时网页中用mailto链接替换电子邮件地址
- 匹配Javascript中的几种不同的电子邮件地址格式
- 使用 Javascript 进行电子邮件地址验证在 ASP.net 中不起作用
- 使用不带正则表达式的jscript验证电子邮件地址
- ng变化不会'除非我输入了有效的电子邮件地址,否则我不会因为输入电子邮件而被解雇
- 使用JavaScript或JQuery验证电子邮件地址
- 如何防止电子邮件地址的css自动连字符
- 如何基于电子邮件地址域重定向到电子邮件登录页面
- 将多个电子邮件表单中的电子邮件发送到多个电子邮件地址
- 将回复电子邮件地址更改为队列's在动态crm 2011中的电子邮件地址
- 使用curl命令向sendgrid添加电子邮件地址
- 有没有办法检测电子邮件地址的假域名?使用Perl、php、javascript
- Regex用于有效和无效的电子邮件地址
- Regex Groups-选择电子邮件地址前的文本
- Angularjs, lexerr Lexer 错误:如何将电子邮件地址(regex)传递给函数
- 在尝试检索经过身份验证的Google+用户的电子邮件地址时获取“gapi.client未定义”
- 如何从电子邮件地址中检索姓名