Bien, entonces, tengo este patrón.
^(([0-9*\/]+)\s??){7}$De forma predeterminada, se supone que debe coincidir con 7 segmentos que pueden tener uno de estos formularios de muestra:
[0/2, *, 2, /]El problema es que esto coincide con:
* * 0/2 * * - incorrecto* * * * * * * - correcto* 0/2 * * * 2 * - correcto* 0/2 0/2 - incorrectoEn C#, solo usaría ++ en el primer grupo de captura y funcionaría, pero Javascript tiene una expresión regular desactualizada a la que le faltan funcionalidades clave.
Aquí está el patio de recreo para reproducir: https://regex101.com/r/Pk23dV/1
El patrón (([0-9*\/]+)\s??){7}$ es de tipo ^((a)b?){x}$ donde la parte a es obligatoria y la parte b es opcional. Es decir, el cuantificador {7} en su expresión regular significa que debe haber al menos siete ocurrencias de un carácter que coincida con el patrón [0-9*\/] , ya sea consecutivo o separado por espacios en blanco.
Si desea escribir una expresión en la que \s sea obligatorio entre [0-9*\/]+ partes, puede utilizar
^[0-9*\/]+(?:\s[0-9*\/]+){6}$ ^(?:([0-9*\/]+)(?:\s(?!$)|$)){7}$Vea la demostración de expresiones regulares 1 y la demostración de expresiones regulares 2 .
Detalles de expresiones regulares
^ - comienzo de la cadena[0-9*\/]+(?:\s[0-9*\/]+){6} - uno o más dígitos, / o * y luego seis apariciones de un espacio en blanco y luego uno o más dígitos, / o *(?:([0-9*\/]+)(?:\s(?!$)|$)){7} - siete apariciones de uno o más dígitos, / o * seguido de un espacio en blanco si no al final de la cadena o al final de la cadena$ - final de la cadena.