La cadena puede ser http://url.com/scripts.js:129:1 o http://url.com/scripts.js:129 pero siempre quiero http://url.com/scripts.js:129 .
Esto es lo que probé, pero sigue cambiando el índice de matriz. 'http://url.com/scripts.js:129:1'.match(/(.+)(\:\d+(?!\:\d+)?)$/);
Ayúdame, por qué mi expresión regular no funciona correctamente.
Si el punto es llegar hasta el primero : + número y omitir el resto, puede usar
^(.+?:\d+)(?::\d+)*$ ^.+?:\d+ Vea esta demostración de expresiones regulares . ^.+?:\d+ es preferible si no necesita hacer coincidir la cadena completa y capturar ambas partes en grupos.
Detalles :
^ - comienzo de la cadena(.+?:\d+) - Grupo 1 capturando uno o más caracteres que no sean caracteres de salto de línea tan pocos como sea posible y luego un : y uno o más dígitos, y luego(?::\d+)* - cero o más secuencias de : y uno o más dígitos$ - final de la cadena.Prueba el siguiente patrón:
/:(\d+)(?::\d+)?$/Asume que puede haber otro par de números y dos puntos, pero es opcional.