Вы должны принять к сведению, что адрес электронной почты является невероятно сложным объектом и могут содержать несколько @
знаков (реф. 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 */
}
Что проблема у вас с 'расколе («@»)'? – icedwater
@icedwater проблема с '.split ('@')' заключается в том, что '@' разрешено как часть * имени/адреса *, как в 'im @ home @ example.com' - в этом случае' split' не может убедитесь, что '[0]' -й результат является фактическим полным именем строки 'im @ home', но скорее приведет к только' im'. –