使用 javascript,我们如何从字符串中删除 @gmail.com 或 @aol.com 以便只剩下名称?
var string = "johndoe@yahoo.com";
将只是“johdoe”吗?我尝试了拆分,但结果并不好。谢谢。
使用 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/rfc3696 Page 5 )的有效名称:@
john@doe
"john@@".doe
"j@hn".d@e
鉴于电子邮件值已经验证, String.prototype.match()可以用于检索所需的名称,域:
const name = email.match(/^.+(?=@)/)[0];
const domain = email.match(/(?<=.+@)[^@]+$/)[0];
const name = email.match(/(.+)@/)[1];
const domain = email.match(/.+@(.+)/)[1];
要在 Array 中获取两个片段,请使用String.prototype.split( ) 在最后一个@
字符处拆分字符串:
const [name, domain] = email.split(/(?<=^.+)@(?=[^@]+$)/);
console.log(name, domain);
或者干脆用/@(?=[^@]*$)/
.
这是一个使用可重用函数的示例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 */
}
还有另一种使用split的方法:
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() 和正则表达式。您可以在此处阅读有关使用正则表达式替换()的更多信息
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" ]