Si dovrebbe prendere atto che un indirizzo email valido è un oggetto incredibilmente sofisticata e può contenere più @
segni (rif. http://cr.yp.to/im/address.html).
"La parte del dominio di un indirizzo è tutto dopo il @
finale."
Quindi, si dovrebbe fare qualcosa di equivalente a:
var email = "[email protected]";
var name = email.substring(0, email.lastIndexOf("@"));
o anche più breve,
var name = email.replace(/@[^@]+$/, '');
Se si desidera che sia il nome e il dominio/hostname, allora questo lavoro:
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 */
}
fonte
2013-08-22 04:33:05
Qual è stato il problema che hai avuto con 'split ('@')'? – icedwater
@icedwater il problema con '.split ('@')' è che '@' è permesso come parte del * nome/indirizzo * come in 'im @ home @ example.com' - in questo caso' split' non può garantiamo che il risultato '[0]' th è il vero nome completo della stringa 'im @ home', ma risulterà in solo' im'. –