Entonces, como ejercicio, quería hacer coincidir cualquier número JS. Este es el que se me podría ocurrir:
/^(-?)(0|([1-9]\d*?|0)(\.\d+)?)$/ Sin embargo, esto no coincide con la nueva sintaxis con separadores de guión bajo ( 1_2.3_4 ). Intenté un par de cosas pero no pude encontrar algo que funcionara. ¿Cómo podría expresar todos los números JS en una expresión regular?
¿Qué tal esto?
^(-?)(0|([1-9]*?(\_)?(\d)|0|)(\.\d+)?(\_)?(\d))$Para el formato en la pregunta, podría usar:
^-?\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?$Vea una demostración de expresiones regulares .
O permitiendo solo un cero inicial:
^-?(?:0|[1-9]\d*)(?:_\d+)*(?:\.\d+(?:_\d+)*)?$El patrón coincide:
^ Comienzo de cadena-? Coincidir con un opcional -(?:0|[1-9]\d*) Coincide con 0 o 1-9 y dígitos opcionales(?:_\d+)* Opcionalmente, repetir la coincidencia de _ y 1+ dígitos(?: grupo de no captura\.\d+(?:_\d+)* Partido . y 1+ dígitos y, opcionalmente, repetir la coincidencia de _ y 1+ dígitos)? Cerrar grupo de no captura$ Fin de la cadenaVea otra demostración de expresiones regulares .