Estou tentando adicionar um marcador de vídeo do YouTube em algum lugar.
Se o URL do meu vídeo do YouTube for: 'https://www.youtube.com/watch?v=xxxxxx&t=12:13'
, ele deverá ser convertido no formato: 'https://www.youtube.com/watch?v=xxxxxx&t=25s'
Basicamente eu mudo o formato do timer: 12:13
para 733s
(12*60 + 13)
Eu posso fazer isso de forma simples.
Mas eu quero fazer isso em uma única linha com validação regex como:
let url = 'https://www.youtube.com/watch?v=xxxxxx&t=12:13';
console.log(url.replace(/(\d+)\:(\d+)/g, '$1$2'));
let cUrl = url.replace(/(\d+)\:(\d+)/g, `${Number($1)*60 + Number($2)}s`);
console.log(cUrl);
Saída do console do navegador:
Alguém pode me orientar por que está mostrando o NaN
?
O que estou fazendo errado?
Como os comentários sugerem, você precisará usar uma função de substituição em vez de uma string de substituição, já que deseja converter grupos de captura em números, realizar alguma aritmética e acrescentar algum texto posteriormente.
O código a seguir deve funcionar para você:
Uma solução alternativa é usar
eval
, mas use-a somente quando você puder confiar que o originalurl
não conterá nenhum código JS malicioso de usuários externos: