tengo la cadena:
"Vl.55.16b25.3d.42b50.59b30.90.24b35.3d.56.67b70.Tv.54b30.Vl.41b35.Tv.Bd.71b50.3d.99b20.03b50.Tv.73b50.Vl.05b25.12b40.Bd.Tv.82b25."Cómo separar obtener resultados como:
["Vl.55.16b25", 3d.42.b50.59b30.90.24b35, 3d.56.67b70, ...]La lógica:
Condición 1: El Fin será inicio b y 2 número. Ejemplo: b20, b25. Si paso la condición 1, necesito verificar la condición 2.
Condición 2: tal vez como "3d" o 2 caracteres. Si no coincide con la condición 2, debemos pasar el siguiente carácter al bloque actual.
Muchas gracias.
Si entiendo su pregunta correctamente, el siguiente código debería funcionar:
var string = "Vl.55.16b25.3d.42b50.59b30.90.24b35.3d.56.67b70.Tv.54b30.Vl.41b35.Tv.Bd.71b50.3d.99b20.03b50.Tv.73b50.Vl.05b25.12b40.Bd.Tv.82b25."; console.log(string.split(/(?<=b\d\d)\.(?=3d)/g))Explicación:
(?<=) es mirar hacia atrás.b coincide con el carácter literal "b".\d coincide con cualquier dígito, por lo que \d\d coincidirá con dos dígitos seguidos.\. coincide con un literal ".", necesita \ delante porque, de lo contrario, coincidiría con cualquier carácter.(?=) es una anticipación.g significa global, por lo que la cadena se dividirá en cada aparición de la expresión regular.Esto significa que la cadena se dividirá cada vez que aparezca "." que va precedido de la letra "b", luego de dos dígitos, y seguido de "3d".
Suponiendo que desea separar al último teniendo 'b' y dos dígitos seguidos de 3d , dos dígitos o el final de la cadena (esto es necesario) y omitiendo el punto inicial, podría tomar la siguiente expresión regular.
const string = "Vl.55.16b25.3d.42b50.59b30.90.24b35.3d.56.67b70.Tv.54b30.Vl.41b35.Tv.Bd.71b50.3d.99b20.03b50.Tv.73b50.Vl.05b25.12b40.Bd.Tv.82b25.", result = string.match(/[^.].*?b\d\d(?=\.(3d|\D\D|$))/g); console.log(result);