Подтвердить что ты не робот

Как получить имя из адреса электронной почты

С javascript, как мы удаляем @gmail.com или @aol.com из строки, так что остается только имя?

var string = "[email protected]";

Будет просто "johdoe"? Я пробовал с расколом, но это не закончилось хорошо. Благодарю.

4b9b3361

Ответ 1

var email = "[email protected]";
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 Page 5)

джон\@doe
"Джон @@". Лань
"j @hn".d\@e

Ответ 2

Следует отметить, что действительный адрес электронной почты является невероятно сложным объектом и может содержать несколько знаков @ (ссылка http://cr.yp.to/im/address.html).

"Доменная часть адреса - это все после окончательного @."

Таким образом, вы должны сделать что-то эквивалентное:

var email = "[email protected]";
var name = email.substring(0, email.lastIndexOf("@"));

или даже короче,

var name = email.replace(/@[^@]+$/, '');

Если вы хотите как имя, так и имя домена/хоста, то это будет работать:

var email = "[email protected]";
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 */
}

Ответ 3

И еще одна альтернатива с использованием split:

var email = "[email protected]";
var sp = email.split('@');

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

Ответ 4

Попробуйте использовать substring() и indexOf()

var name = email.substring(0, email.indexOf("@"));

Ответ 5

var email = "[email protected]";
email=email.replace(/@.*/,""); //returns string (the characters before @)

Ответ 6

Вы можете попробовать использовать replace() и регулярное выражение. Вы можете прочитать больше о replace() с помощью регулярных выражений здесь

var myEmail = '[email protected]';
var name= myEmail.replace(/@.*/, "");
console.log(name);

Это возвращает строку перед @