En muchos dialectos de expresiones regulares, en una clase de caracteres, un guión/menos debe ser el primero o el último:
/^[-a-zA-ZåäöÅÄÖ\s]+$/
/^[a-zA-ZåäöÅÄÖ\s-]+$/
Negated clases de personajes:
/^[^-a-zA-ZåäöÅÄÖ\s]+$/
/^[^a-zA-ZåäöÅÄÖ\s-]+$/
Con corchete cerca también, poner los corchetes en la parte delantera y el guión al final:
/^[]a-zA-ZåäöÅÄÖ\s-]+$/
Y si es necesario excluir ambos cierran corchetes y guiones, entonces:
/^[^]a-zA-ZåäöÅÄÖ\s-]+$/
Para la pregunta, una interpretación podría ser: desea insistir en los caracteres alfabéticos alrededor de los guiones, y solo quiere permitir espacios al principio y al final, y es posible que desee permitir apóstrofos en los que permita guiones, y desea evitar los consecutivos guiones o apóstrofes.
/^\s*[a-zA-ZåäöÅÄÖ]*([a-zA-ZåäöÅÄÖ]+[-'][a-zA-ZåäöÅÄÖ]+)*\s*$/
Advertencia: expresiones regulares probó formalmente con Perl, no JavaScript.
Comienzo de cadena, cero o más espacios; cero o más caracteres alfabéticos; cero o más secuencias de 'uno o más caracteres alfabéticos más guión o apóstrofo y uno o más caracteres alfabéticos', seguidos del final de la cadena. Puede pegar un par de paréntesis adicionales después del primer \s*
y antes del segundo \s*
para capturar el nombre completo.
Para Anna-nicole
, el primer término alfa coincidiría con Ann
, y el otro término alfa coincidiría con a-nicole
. Para Anonymous
, el primer término coincidiría con toda la cadena, el segundo estaría vacío. Para O'Reilly
, el primer término estaría vacío y el segundo coincidiría con toda la cadena. Los nombres como "C - d" y "Who''Me" serían rechazados (no se permiten los guiones ni los apóstrofos repetidos). Permitiría Smith-Jones-and-Son
como nombre y Smith-And-O'Reilly
. No permitirá guiones o apóstrofos iniciales o finales.
Si quisiera permitir el 'primer nombre del apellido', necesitaría dos lotes del 'núcleo' de la expresión regular anterior con \s+
en el medio. Etc.
Actualmente, permite espacios en ambos extremos. ¿Los quiere también limitados? ¿Y quieres prohibir "Nancy - O'Hara" (con los espacios alrededor de los guiones), y qué pasa con el apóstrofo en el apellido? –
@Jonathan: Sí, me gustaría eso también, ahora que lo mencionas. –