Probé la expresión regular muy duro pero no pude obtener el resultado deseado.
Por favor, eche un vistazo al siguiente código.
var strings = [ '1h', //should match '13s', //should match '30m', //should match '42hr', //should not match '8 hours ', //should not match '765765', //should not match '5sec', //should not match '23445345345s', //should not match '335m' //should match ]; for (var i = 0; i < strings.length; i++) { var match = strings[i].match(/\d{4}[h|m|s]{1}/g); console.log(strings[i], (match ? "Match" : "Not match")); }
Su expresión regular debe ser:
/^\d{1,4}[hms]$/gm
Primero, necesita 4 dígitos con d{4}
Cámbielo a d{1,4}
para que sea de uno a cuatro dígitos
Luego agregue un $
para indicar el final de la cadena, para que no permita más caracteres después de la letra
Consulte Regex101 , realmente útil para probar y comprender expresiones regulares
He agregado un ^ para que coincida desde el principio
strings.filter(x => x.match(/^\d{1,4}[hms](?!\w)/g) )