Alguien puede ayudar con esto tal vez usando expresiones regulares. Es necesario que la función "useInput" tenga minutos como primer parámetro y segundos como segundo parámetro, si la entrada puede ser: "1 2" (dos dígitos - minutos segundos), "1" (solo un dígito - minutos) , "1 minutos 2", "2 segundos 1".
No es tan necesario pero si no es demasiado difícil: segundos = seg = segundo = s; minutos = minuto = min = m; En lugar de "1 minuto", puede escribir "1 minuto" en "entrada"
const input = " 2 seconds 1 minutes " const regexTimer = new RegExp(/([0-9]+)\s*minutes?|([0-9]+)\s*seconds?/, 'g') useInput(input.replace(regexTimer, '$1$2')).split(' '));//1 parameter is minute, 2 parametr is second function useInput(minutes, seconds){...};Podría usar grupos de captura y pasar esos valores de grupo a la función.
Compruebe qué valores de grupo no están vacíos y, en función de eso, pase los parámetros en el orden correcto a la función useInput.
Para los nombres parciales de segundos y minutos, puede usar grupos opcionales anidados.
^\s*(?:(\d+)(?:\s*(\d+))?|(\d+)(?:\s+s(?:ec(?:onds?)?)?)?(?:\s+(\d+)(?:\s+m(?:in(?:utes?)?)?)?)?|(\d+)(?:\s+m(?:in(?:utes?)?)?)?(?:\s+(\d+)(?:\s+s(?:ec(?:onds?)?)?)?)?)\s*$Demostración de expresiones regulares
const useInput = (minutes, seconds) => console.log(`minutes: ${minutes ? minutes : "n/a"} - seconds: ${seconds ? seconds : "n/a"}`); const regex = /^\s*(?:(\d+)(?:\s*(\d+))?|(\d+)(?:\s+s(?:ec(?:onds?)?)?)?(?:\s+(\d+)(?:\s+m(?:in(?:utes?)?)?)?)?|(\d+)(?:\s+m(?:in(?:utes?)?)?)?(?:\s+(\d+)(?:\s+s(?:ec(?:onds?)?)?)?)?)\s*$/; [ "1", "1 2", "1 minutes 2", "4 seconds 3", "5 seconds", "6 minutes", "7 min", "8 sec", "9 s 10 m", "11 m 12 second", "20 9 sec", "30 s 44", "test" ].forEach(s => { let m = s.match(regex); if (m) { if (m) { if (undefined !== m[1]) useInput(m[1], m[2]) if (undefined !== m[3]) useInput(m[4], m[3]) if (undefined !== m[5]) useInput(m[5], m[6]) } } })