Quiero extraer una cadena específica desde el interior cuando existe la siguiente cadena. La cadena que quiero extraer es uuid.
Pero no sé cómo completar la expresión regular para traer uuid. ¿Cómo puedo escribirlo excepto por '/' y '-' antes y después de uuid?
const text = "hello_img/2021/12/27/uuid-c.jpg"; const reg = /\b\/u.*?-/g; const matches = text.match(reg); console.log(matches);Tome el texto después de la última aparición de /, que parece ser el uuid que desea:
const url = "hello_img/2021/12/27/f189f4ae-af11-11e7-b252-186590cec0c1-helloworld.jpg"; console.log(url.split("/").pop());la salida será
f189f4ae-af11-11e7-b252-186590cec0c1-helloworld.jpgpara eliminar .jpg, puede usar
newUrl = url.replace('.jpg','');Si desea hacer coincidir el formato real del uuid después de la última aparición de / , entonces puede hacer coincidir / y capturar el formato en el grupo de captura 1 seguido de hacer coincidir cualquier carácter excepto / hasta el final de la cadena.
\/\b([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\b[^\/\r\n]*$Demostración de expresiones regulares
const text = "hello_img/2021/12/27/f189f4ae-af11-11e7-b252-186590cec0c1-helloworld.jpg"; const reg = /\/\b([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\b[^\/\r\n]*$/; const m = text.match(reg); if (m) { console.log(m[1]); }