Estoy tratando de hacer una expresión regular que solo acepte:
Mínimo 100 y al menos 1000 caracteres, los caracteres “,',<,> no están permitidos, dos puntos completos uno tras otro no están permitidos.
Esto es lo que tengo por ahora:
^.{100,1000}$ → de 100 a 1000 caracteres^[^"'<>]*$ → para los caracteres que no están permitidos^([^._]|[.](?=[^.]|$)|_(?=[^_]|$))*$ → no permite 2 puntos consecutivos¿Cómo combino esta expresión regular en una? ._.
Esta parte [^._] significa que no hay punto ni guión bajo y esta parte [.](?=[^.]|$)|_(?=[^_]|$) coincide con un . o _ seguido por el opuesto o el final de la cadena.
Puede escribir el patrón utilizando una única aserción anticipada negativa que excluya __ o ..
^(?!.*([._])\1)[^"'<>\n]{100,1000}$Explicación
^ Comienzo de cadena(?! Anticipación negativa, afirmar que lo que está a la derecha no es.*([._])\1 captura . o _ y hacer coincidir el mismo carácter capturado después de él (lo que significa que no aparece .. o __ )) Anticipación cercana[^"'<>\n]{100,1000} Coincide 100-1000 veces con cualquier carácter excepto el de la lista$ Fin de la cadena Demostración Regex (con el cuantificador establecido en {10,100} para la demostración)