Tengo una expresión regular de javascript que coincide con un valor numérico incremental usando mirar hacia adelante, sin embargo, creo que esto se puede simplificar.
Actualmente estoy usando /^(?=[1-5]{5}$)(?=(?=.*([1]))(?=.*([2]))(?=.*([3]))(?=.*([4]))|(?=.*([2]))(?=.*([3]))(?=.*([4]))(?=.*([5])))\d+$/gm para identificar si al menos 4 dígitos en una cadena de 5 dígitos tienen valores que aumentan en 1.
Normas:
(?=[1-5]{5}$)(?=.*([1]))(?=.*([2]))(?=.*([3]))(?=.*([4])) y (?=.*([2]))(?=.*([3]))(?=.*([4]))(?=.*([5])) .or => (?=(?=.*([1]))(?=.*([2]))(?=.*([3]))(?=.*([4]))|(?=.*([2]))(?=.*([3]))(?=.*([4]))(?=.*([5])))\d+$Aquí hay un ejemplo de cadenas que coinciden con la expresión regular:
12343 - Incremento de 4 números en orden a partir del 1
32142 - Incremento de 4 números, pero no en orden comenzando con el 1
23451 - Incremento de 4 números en orden a partir del 2
52345 - Incremento de 4 números en orden a partir del 2
34152 - Incremento de 4 números fuera de orden, aquí tenemos 2 coincidencias que no están en orden, solo se requiere una coincidencia
12345 - Incremento de 4 números en orden, aquí tenemos 2 coincidencias que están en orden, solo se requiere una coincidencia
Mi expresión regular parece funcionar con mis pruebas, sin embargo, siento que hay un enfoque más dinámico y limpio para esto que simplemente no conozco, ya que mis habilidades de expresión regular están por debajo de la media, por decir lo menos.