Búsqueda de sitios web

javascript - Dividir en una sola ocurrencia del separador


Tengo cadenas como

A_B_C_D
A_B___C_D

donde el ___ podría estar en cualquier parte de la cadena.

¿Cuál es la manera más fácil de dividirlos en cualquier _ individual pero no en ___?

Respuesta #1

>>> "A_B_C_D".match(/(?:[^_]|_{2,})+/g)
["A", "B", "C", "D"]

>>> "A_B___C_D".match(/(?:[^_]|_{2,})+/g)
["A", "B___C", "D"]

En lugar de encontrar los separadores, encontramos los componentes en sí mismos. Observa que las cadenas deben ser o bien no tener _s (porque el separador es _), o tener más de un _. Así que la expresión regular para coincidir con ellos es simplemente así.

Tenga en cuenta que este regex ignora las cadenas vacías si la entrada comienza o termina con _ (por ejemplo, "_a_" solo devolverá ["a"]).