javascript dividiendo una cadena en un carácter especial

Estoy tratando de rellenar un formulario “inteligentemente”, quiero rellenar previamente las entradas de nombre y apellido en función de la dirección de correo electrónico del usuario, por ejemplo,

jon.doe@email.com DEVOLUCIONES Jon Doe
jon_doe@email.com REGRESAR Jon Doe
jon-doe@email.com DEVOLUCIONES Jon Doe

He logrado obtener la cadena antes de la @ ,

 var email = letters.substr(0, letters.indexOf('@')); 

Pero no puedo averiguar cómo dividir () cuando el separador puede tener varios valores, puedo hacer esto,

 email.split("_") 

¿Pero cómo puedo dividir en otra dirección de correo electrónico caracteres especiales válidos?

El método de split cadenas de JavaScript puede tomar una expresión regular.

Por ejemplo, lo siguiente se dividirá en . , - , y _ .

 "i-am_john.doe".split(/[.\-_]/) 

Devolviendo lo siguiente.

 ["i", "am", "john", "doe"] 

Puedes usar una expresión regular para lo que quieres dividir. Por ejemplo, puede dividirse en cualquier cosa que no sea una letra:

 var parts = email.split(/[^A-Za-z]/); 

Demostración: http://jsfiddle.net/Guffa/xt3Lb9e6/

Puede usar expresiones regulares para hacerlo, simplemente proporcione una lista de los caracteres entre corchetes y escape si es necesario.

email.split (“[_- \.]”);

¿Es eso lo que quieres decir?

Tienes razón en que necesitas usar la función de división .

La función de división funciona al tomar un argumento para dividir la cadena. Múltiples valores se pueden dividir a través de expresiones regulares. Para su uso, intente algo como

 var re = /[\._\-]/; var split = email.split(re, 2); 

Esto debería dar como resultado una matriz con dos valores, primer / segundo nombre. El segundo argumento es el número de elementos devueltos.

Creé un jsFiddle para mostrar cómo se podía hacer esto:

 function printName(email){ var name = email.split('@')[0]; // source : http://stackoverflow.com/questions/650022/how-do-i-split-a-string-with-multiple-separators-in-javascript var returnVal = name.split(/[._-]/g); return returnVal; } 

http://jsfiddle.net/ts6nx9tt/1/

Puedes dividir una cadena usando una expresión regular . Para emparejar , _ o - , puede usar una clase de caracteres, por ejemplo [.\-_] . La syntax de las expresiones regulares en JavaScript es /expression/ , por lo que su ejemplo se vería así:

 email.split(/[\.\-_]/); 

Tenga en cuenta que las barras invertidas son para prevenir . y - ser interpretados como caracteres especiales. . Es una clase de personaje especial que representa a cualquier personaje. En una clase de caracteres, - se puede usar para especificar rangos, como [az] .

Si necesita una lista dinámica de caracteres para dividir, puede construir una expresión regular usando el constructor RegExp . Por ejemplo:

 var specialChars = ['.', '\\-', '_']; var specialRegex = new RegExp('[' + specialChars.join('') + ']'); email.split(specialRegex); 

Puede encontrar más información sobre expresiones regulares en JavaScript en MDN .

Si define sus separadores, el código a continuación puede devolverle todas las alternativas.

 var arr = ["_",".","-"]; var email = letters.substr(0, letters.indexOf('@')); arr.map(function(val,index,rest){ var r = email.split(val); if(r.length > 1){ return r.join(' '); } return ""; } ); 

Expresiones regulares —

 email.split(/[_\.-]/) 

Este coincide (por lo tanto, divide en) cualquiera de (un conjunto de caracteres, indicado por []) _,., O -.

Aquí hay un buen recurso para aprender expresiones regulares: http://qntm.org/files/re/re.html