如何从电子邮件地址中检索姓名

时间:2013-08-22 03:47:27

标签: javascript

使用javascript,我们如何从字符串中删除@ gmail.com或@ aol.com,以便只保留名称?

var string = "johndoe@yahoo.com";

将只是“johdoe”?我试过分裂,但结果并不好。谢谢。

8 个答案:

答案 0 :(得分:61)

var email = "john.doe@email.com";
var name   = email.substring(0, email.lastIndexOf("@"));
var domain = email.substring(email.lastIndexOf("@") +1);

console.log( name );   // john.doe
console.log( domain ); // email.com

上述内容也适用于包含@tools.ietf.org/html/rfc3696 )的有效名称

  

约翰\ @doe
  “约翰@@”。母鹿
  “j @ hn”.d \ @e

答案 1 :(得分:10)

您应该注意,有效的电子邮件地址是一个非常复杂的对象,可能包含多个@个符号(参考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 */
}

答案 2 :(得分:7)

使用split的另一种选择:

var email = "john.doe@email.com";
var sp = email.split('@');

console.log(sp[0]); // john.doe
console.log(sp[1]); // email.com

答案 3 :(得分:4)

使用substring()indexOf()

进行尝试
var name = email.substring(0, email.indexOf("@"));

答案 4 :(得分:1)

var email = "johndoe@yahoo.com";
email=email.replace(/@.*/,""); //returns string (the characters before @)

答案 5 :(得分:1)

您可以尝试使用replace()和正则表达式。您可以使用正则表达式here

了解有关replace()的更多信息
var string = 'johndoe@yahoo.com';
var name= string.replace(/@.*/, "");
console.log(name);

这将返回@

之前的字符串

答案 6 :(得分:0)

How to remove or get domain name from an e-mail address in 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

答案 7 :(得分:0)

这个简单的正则表达式可以满足需要。
/^.*(?=@)/g

示例:

"johndoe@yahoo.com".match(/^.*(?=@)/g); // returns Array [ "johndoe" ]