Quiero una expresión regular que coincida con números alternos de 10 dígitos como 1212121212 3434343434 , etc. Sé que esta no es la forma correcta de preguntar aquí. Pero intenté muchas cosas por mi parte que no pude descifrar, así que busqué ayuda.
No puede ser 1313131313. Yo debería ser el siguiente número.
Si la cadena siempre tiene 10 caracteres y siempre tenemos números de un solo dígito, simplemente tome los primeros dos caracteres, repita 5 veces y compare:
const check = str => { const a = +str[0]; const b = +str[1]; return a+1 === b && `${a}${b}`.repeat(5) === str; }; check('1212121212'); //=> true check('1212121215'); //=> false check('1313131313'); //=> falseTambién puede usar Array.from y especificar una longitud y un desplazamiento para obtener la alternancia para el siguiente número:
const alternating = (len, offset) => Array.from({ length: len }, (_, index) => (index % 2) + offset).join(''); console.log(alternating(10, 1) === "1212121212"); console.log(alternating(10, 3) === "3434343434"); console.log(alternating(10, 2) === "1313131313");Para expresiones regulares puras, solo tendría que calcular las diferentes combinaciones porque las expresiones regulares no admiten el concepto de números ni su secuencia; todo es una cadena de caracteres.
^(01|12|23|34|45|56|67|78|89)\1{4}$ Si 9090909090 es válido entonces:
^(01|12|23|34|45|56|67|78|89|90)\1{4}$