Necesito una expresión regular para secuencias de página que
partidos :
pero no coincide :
He probado los siguientes patrones pero no funcionan:
/^(\d*-\d*,?|\d*,?)*$/ /^(\d*-{1}\d*,?|\d*,?)*$/ También quiero validar la entrada del usuario mientras el usuario escribe, por lo que el patrón debe permitir seguimiento - , en ciertos casos. El ejemplo de código React para permitir la entrada con un patrón particular se ve así:
const customPageInputChange = (e) => { if(e.target.value.match(/.../) !== null) { setCustomPage(e.target.value) } }Consulte https://jsfiddle.net/mayankshukla5031/4zqwq1fj/ para ver un ejemplo completo con validación de entrada.
Una posible expresión regular:
^(\d+(-\d+)?, )*\d+(-\d+)?$Consulte https://regex101.com/r/txVh3e/1 para casos de prueba.
Si también desea verificar si las páginas aumentan, una expresión regular no es realmente adecuada, y debe optar por verificar las cadenas mediante programación.
Si desea validar la entrada del usuario mientras el usuario está escribiendo, necesita una expresión regular que permita el seguimiento - y , . Una posible expresión regular:
^(\d+(-\d+)?, ?)*(\d+-?\d*)?$Consulte https://regex101.com/r/rKx6lq/1 para ver casos de prueba y https://jsfiddle.net/qtb4yd7s/ para ver una demostración.
podrías usar
^\d+(?:-\d+)?(?:,\s*\d+(?:-\d+)?)*$En Javascript, puede usar regex.test(str) para devolver un valor booleano para ver si el patrón coincide.
En partes, el patrón coincide:
^ Comienzo de cadena\d+ Coincide con 1+ dígitos(?:-\d+)? Coincidencia opcional - y 1+ dígitos(?: Grupo de no captura para hacer coincidir como una parte completa,\s* Coincide con una coma y caracteres de espacio en blanco opcionales\d+(?:-\d+)? Igual que el patrón anterior.)* Cierre el grupo de no captura y, opcionalmente, repita para que coincida con una sola ocurrencia$ Fin de la cadenaVer una demostración Regex