En la cadena, solo hay 3 parámetros disponibles: C1: el número es solo 0 o 1 R1: el número es solo 0 o 1 A
Ejemplo de cadena "C1-R1-C0-C0-A-R0-R1-R1-A-C1"
Algo así /[CRA]\d-/gi solo para cada uno con separador
¿O es mejor usar métodos de división y mapa?
Si está buscando una expresión regular, algo como esto debería funcionar:
/^([CR][01]|A)(-([CR][01]|A))*$/Esencialmente, hacemos coincidir un "parámetro" válido, así como cualquier número de "-parámetro" después de él. En contexto:
const string1 = 'C1-R1-C0-C0-A-R0-R1-R1-A-C1'; const string2 = 'invalid'; const testString = (string) => { return /^([CR][01]|A)(-([CR][01]|A))*$/.test(string); }; console.log(testString(string1)); console.log(testString(string2));Producción:
true falseUse dividir y luego filtrar con la expresión regular.
let string = "C1-R1-C0-C0-A-R0-R1-R1-A-C1"; let result = string.split('-').filter(el => /^([CR][01]|A)$/.test(el)); console.log(result);