Tengo una expresión en JS para hacer coincidir todas las palabras que contienen (por ejemplo) 'foo+' , pero me gustaría descartar aquellas que terminan con algún otro patrón.
¿Hay alguna manera de hacer esto en una sola expresión regular?
ejemplo:
myExp = /foo+\w*/; /*should add something to avoid ending with 'ba+r'*/ myExp.matchAll('boo, fo, food, foobaaar, foobr'); debería dar como resultado ["food", "foobr"] sin incluir 'foobaaar'
Desea utilizar una anticipación negativa como (?!not_this) , por supuesto, reemplace not_this con el patrón apropiado para excluir el uso de caracteres de separación de palabras \b , o lo que sea que se ajuste a su lógica.
let myExp = /\bfoo+(?!\w*ba+r\b)\w*/g; console.log(...' boo fo food foobaaar foobr foobaardd boofoo foodbar '.matchAll(myExp));Puede usar la mirada negativa hacia adelante. Para excluir los casos en los que ba+r no es la terminación , use \b en esa mirada hacia adelante.
let myExp = /foo+(?!\w*ba+r\b)\w*/g; let input = 'boo, fo, food, foobaaar, foobr, foobaardd'; console.log(...input.match(myExp));