Q:

Buscar un caracter en una cadena de texto, crear array y dar un valor aleatorio

Estoy liado con lo siguiente, de una cadena de texto, quiero generar un array con el contenido que este dentro de "{" y "}" y a traves .split el contenido de entro delimitado |.
despues mostrar solo el uno de los valores del array de manera aleatoria.
Ejemplo:
texto:
Hola me llamo {Gorka|Javier|Paco} tengo {25|28|30} años y vivo en {Vitoria|Cadiz|Bilbao}
texto resultado:
Hola me llamo Javier tengo 28 años y vivo en Vitoria.

A:

var texto = "Hola me llamo {Gorka|Javier|Paco} tengo {25|28|30} años y vivo en {Vitoria|Cadiz|Bilbao}";

//expresion regular para separar los bloques de opciones
var expr = /{[a-zA-z0-9|]*}/g

//se guardan los bloques en la variable matches
var matches = texto.match(expr)


var mensaje = 
`Hola me llamo ${textoAleatorio(matches[0])} 
tengo ${textoAleatorio(matches[1])} años y vivo en ${textoAleatorio(matches[2])}`

console.log(mensaje);

//la función recibe un bloque de opciones
function textoAleatorio(texto){

//quitar las llaves que encierran el bloque
texto = texto.replace(/[{}]/g,"")

//extraer las opciones del bloque separadas por |
opciones = texto.split("|");

//obtener un numero aleatorio
posicionAleatoria = Math.floor(Math.random() * opciones.length);

//retornar la opcion en la posicion aleatoria
return opciones[posicionAleatoria];

}

