Tengo una cadena:
var string = "aaaaaa<br />† bbbb<br />‡ cccc"
Y me gustaría dividir esta cadena con el delimitador <br />
seguido de un carácter especial.
Para hacer eso, estoy usando esto:
string.split(/<br \/>&#?[a-zA-Z0-9]+;/g);
Estoy obteniendo lo que necesito, excepto que estoy perdiendo el delimitador. Aquí está el ejemplo: http://jsfiddle.net/JwrZ6/1/
¿Cómo puedo mantener el delimitador?
javascript
regex
Milos
fuente
fuente
var delim = "<br/>";
?Respuestas:
Utilice la búsqueda anticipada (positiva) para que la expresión regular afirme que el carácter especial existe, pero en realidad no coincide:
Véalo en acción:
fuente
0
al final de cada cadenaEstaba teniendo un problema similar pero ligeramente diferente. De todos modos, aquí hay ejemplos de tres escenarios diferentes sobre dónde guardar el deliminador.
Advertencia: el cuarto solo funcionará para dividir caracteres individuales. ConnorsFan presenta una alternativa :
fuente
g
final.match
solución no codiciosa para estos ejemplos:"11、22、33".match(/.*?、|.+$/g)
->["11、", "22、", "33"]
. El/g
modificador de nota es crucial para el partido.Si ajusta el delimitador en paréntesis, será parte de la matriz devuelta.
Dependiendo de qué parte desea mantener, cambie el subgrupo con el que coincida
Podría mejorar la expresión ignorando el caso de las letras string.split (/ () & #? [A-z0-9] +; / gi);
Y puede coincidir para grupos predefinidos como este:
\d
iguales[0-9]
y\w
iguales[a-zA-Z0-9_]
. Esto significa que su expresión podría verse así.Hay una buena referencia de expresiones regulares en JavaScriptKit .
fuente
respondió aquí también JavaScript Split Regular Expression mantener el delimitador
use el patrón de búsqueda anticipada (? = patrón) en el ejemplo de expresiones regulares
Esto le dará el siguiente resultado.
También se puede dividir directamente
dando el mismo resultado
fuente
Una función de extensión divide la cadena con subcadena o RegEx y el delimitador se coloca de acuerdo con el segundo parámetro adelante o atrás.
La prueba:
fuente
Hice una modificación a la respuesta de jichi y la puse en una función que también admite varias letras.
El tercer método de las respuestas de jichi no funcionaría en esta función, así que tomé el cuarto método y eliminé los espacios vacíos para obtener el mismo resultado.
editar: segundo método que exceptúa una matriz para dividir char1 o char2
uso:
fuente
He estado usando esto:
Excepto que no deberías meterte
String.prototype
, así que aquí hay una versión de función:Entonces podrías hacer:
Y terminarás con:
fuente