Búsqueda de sitios web

regex - Dividir por un carácter en JavaScript pero no por los contiguos


Aquí está el caso:

var stringExample = "hello=goodbye==hello";
var parts = stringExample.split("=");

Salida :

hello,goodbye,,hello

Necesito este resultado:

hello,goodbye==hello

Los caracteres contiguos/repetidos deben ser ignorados, solo toma el único "=" para dividir.

¿Quizás algún regex?

Respuesta #1

Puedes usar una regex:

var parts = stringExample.split(/\b=\b/);

\b verifica los límites de palabra.

Respuesta #2

Lo más probable es que la respuesta de @dystroy sea la que estás buscando. Pero si algún carácter que no sea alfanumérico (A-Z, a-z, 0-9 o _) pudiera rodear un "splitting ="), entonces su solución no funcionará. Por ejemplo, la cadena

It's=risqué=to=use =Unicode!=See?

sería dividido en

"It's", "risqué=to", "use Unicode!=See?"

Entonces, si necesitas evitar eso, normalmente usarías una afirmación de retroceso:

result = subject.split(/(?<!=)=(?!=)/);  // but that doesn't work in JavaScript!

Entonces, aunque esto solo dividiría en = individuales, no puedes usarlo porque JavaScript no soporta la aserción de retroceso (?<!...).

Afortunadamente, siempre puedes transformar una operación split() en una operación global match() haciendo coincidir todo lo que está permitido entre delimitadores:

result = subject.match(/(?:={2,}|[^=])*/g);

te daré

"It's", "risqué", "to", "use ", "Unicode!", "See?"