Как получить имя из адреса электронной почты
С javascript, как мы удаляем @gmail.com или @aol.com из строки, так что остается только имя?
var string = "[email protected]";
Будет просто "johdoe"? Я пробовал с расколом, но это не закончилось хорошо. Благодарю.
Ответы
Ответ 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);
Это возвращает строку перед @