Estoy recorriendo cadenas que incluyen dos marcas de tiempo de 24 horas sin un 0 inicial. Una cadena se ve así
"FooBar Examplestring 4:34 - 12:30"Entiendo que la expresión regular para hacer coincidir una marca de tiempo de 24 horas con un cero inicial opcional es
^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$Lo que no entiendo es, y ese es un conocimiento básico de RegEx que me falta aquí, es cómo obtendría las dos marcas de tiempo como coincidencias de la primera cadena.
Estoy usando javascript por cierto. Aquí hay un código de muestra: https://jsfiddle.net/7dbfeL21/1
Usando la match con el patrón regex \d{1,2}:\d{2} podemos probar:
var input = "FooBar Examplestring 4:34 - 12:30"; var matches = input.match(/\d{1,2}:\d{2}/g); console.log(matches); El patrón \d{1,2}:\d{2} es una simplificación de lo que estabas usando. Pero dado que es poco probable que cualquier otra cosa en su entrada coincida con esto, es posible que encuentre un enfoque más fácil.
Debe eliminar los anclajes ^ y $ y usar límites de palabras en su lugar. Puede acortar el patrón, haciendo que el primer cero sea opcional.
\b(?:0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]\bDemostración de expresiones regulares
let regex = /\b(?:0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]\b/g; let str = "FooBar Samplestring 2:30 - 14:34"; var matches = str.match(regex); console.log(matches);