El Grinch quiere fastidiar la navidad
El Grinch está abriendo las cartas que iban a Santa Claus y las está dejando hechas un lío. 😱
Las cartas son una cadena de texto que incluyen regalos y paréntesis ()
.
Para saber si una carta es válida ✅, debes comprobar que los paréntesis cierran correctamente y que, además, no vayan vacíos.
¡Pero ojo! Porque el Grinch ha dejado llaves {
y corchetes [
dentro de los paréntesis que hacen que no sean válidas. Por suerte sólo los ha dejado en medio de los paréntesis...
Ejemplos:
"bici coche (balón) bici coche peluche" // -> ✅
"(muñeca) consola bici" // ✅
"bici coche (balón bici coche" // -> ❌
"peluche (bici [coche) bici coche balón" // -> ❌
"(peluche {) bici" // -> ❌
"() bici" // ❌
Crea una función que pasándole el texto de la carta, devuelva true
si es válida y false
si no lo es. ¡Y acaba con la travesura del Grinch!
Completa el reto!
Mi solución:
Puedes seguir a @midudev y estar pendiente de los retos de Advent.js
Top comments (10)
Casi no llego, tarde pero aqui esta mi respuesta, me he sacado el aire, pero creanme, trabajo honesto.
const cadenas = 'bici coche (balón bici coche';
function validaCartas(carta) {
if ((/(\D*^[([)]])/g).test(carta)) {
return true;
} else if ((/({2,}/g) || (/){2,}/g) || (/(\s*)/g) || (/(\D+/g) || (/\D+)/g)(/\s[/) || (/\D*[/) || (/\s{\s*)/) || (/\D*{\s*)/).test(carta))
{
return false;
};
}
console.log( validaCartas(cadenas));
Ouuuch esa regex se ve que te hizo humear el cerebro 🤯😬
gracias, si la verdad, pero quise poner otras mas a las que dieron en el ejemplo, si van dos parentesis a la apertura, al cierre, si los parentesis no son solo vacios con nada de espacio () sino vacios con muchos ( ).
personalmente solo uso regex cuando no se complican tanto xd
siempre trato de que sea la última opción a usar en un problema
Tardísimo, pero aqui va una con una expresion regular sencillita:
Espero que os sea util!
Aquí una solución un poco más fácil y sin regex
SIN REGEX
hay alguna otra manera de hacerlo sin usar regex?
usar regex es complicado para muchos,claro que hay otras maneras de resolverlo pero yo opte por solucionarlo con una regex
Utilize un .test en vez del .exec, asi queda mas simple la condicion.
const result = /(([^)]+))/.test(letter);
return (result) ? false : true;