Cita: "B,C" en -> ".A.B,C,D" sale true y debería ser false
Esta expresión es más flexible para que la puedas adaptar a otros casos:
Se ve compleja pero no lo es tanto si la divides por partes, el símbolo "|" divide la expresión en dos y va a devolver true si alguna de las dos el válida, primera parte:
"^B,C" es válida si "B,C" está exactamente al inicio de la cadena.
"[^.]B,C" en este caso cambia el significado de "^" cuando está dentro de "[]" significa que sólo sea válida si el símbolo que le sigue no está presente, en español:
Busca cualquier caracter que no sea un "." antes de "B,C".
Por lo tanto esa expresión te devolvería false para ".A.B,C,D", true para ".A,B,C,D", false para ".B,C,D,A", true para "B,C,D,A".