Estoy tratando de detectar nombres (nombres en francés) que pueden estar en los siguientes formatos
CHARLES
CHARLES-ANTOINE
D'URENBURRY
CHARLES--ANTOINE
CHARLES ANTOINE
Y para eso tengo la siguiente expresión regular
/^([AZ]+(([-]{0,2}|[']|[ ])?[AZ]+))+$/Lo cual funciona, pero el escáner de código de GitHub muestra este error
This part of the regular expression may cause exponential backtracking on strings containing many repetitions of 'AA'.Entiendo el error, sin embargo, no estoy seguro de cómo solucionarlo.
Mi pregunta es: como solucionarlo.
Gracias
Necesitas volver a escribir el patrón como
^[AZ]+(?:(?:-{1,2}|[' ])[AZ]+)*$Vea la demostración de expresiones regulares . Ahora, cada patrón posterior coincidirá con una cadena diferente, en diferentes ubicaciones dentro de la cadena.
Detalles :
^ - comienzo de la cadena[AZ]+ - una o más letras ASCII mayúsculas(?:(?:-{1,2}|[' ])[AZ]+)* - cero o más repeticiones de:(?:-{1,2}|[' ]) - un grupo que no captura que coincide con uno o dos guiones, un espacio o un apóstrofe[AZ]+ - una o más letras ASCII mayúsculas$ - final de la cadena.