Necesito devolver palabras de una cadena que tienen una cierta longitud y hacer esto en 1 línea de código.
Digamos que necesito devolver todas las palabras de más de 2 caracteres de longitud...
Hasta ahora tengo...
const wordsOver2Chars = str => str.match(/\w+\s+(.{2,})/g); console.log( wordsOver2Chars('w gh w qwe regh aerguh eriygarew hw whio wh w') );Esto no funciona.
str.match(/\w+\s+/g) devolverá una serie de palabras, pero no puedo encontrar la manera de agregar el limitador de longitud también.
Uso de errores split(' ').match(\regExp).
Use .split luego .filter .
console.log('w gh w qwe regh aerguh eriygarew hw whio wh w'.split(" ").filter(word => word.length > 2))El metacarácter \w coincide con los caracteres de la palabra. Cuando le agregas un signo +, estás implicando que quieres una cadena de caracteres de palabra con una longitud de al menos 1, si agregas otra \w delante de ella, obtienes una longitud mínima de 2. Y así sucesivamente.
const wordsOver2Chars = str => str.match(/\w\w\w+/g); console.log(wordsOver2Chars('w gh w qwe regh aerguh eriygarew hw whio wh w'));Este es probablemente el enfoque más fácil de entender, está haciendo coincidir un solo carácter de palabra, seguido de otro y luego seguido de una cadena 1+.
Si quiere ser técnicamente correcto, puede usar corchetes para definir el número de elementos (3 siendo mínimo y vacío después de una coma que significa máximo no definido)
const wordsOver2Chars = str => str.match(/\w{3,}/g); console.log(wordsOver2Chars('w gh w qwe regh aerguh eriygarew hw whio wh w'));¿Necesitas usar expresiones regulares? La forma más fácil sería hacer
const wordsOver2Chars = s => s.split(' ').filter(w => w.length > 2).join(' ');Divida la cadena en ' ', luego filtre la matriz resultante para que solo contenga palabras con una longitud > 2 y únalas nuevamente.