На многих диалектах регулярных выражений в классе символов простой или дефис должен быть первым или последним:
/^[-a-zA-ZåäöÅÄÖ\s]+$/
/^[a-zA-ZåäöÅÄÖ\s-]+$/
Отрицательные классы символов:
/^[^-a-zA-ZåäöÅÄÖ\s]+$/
/^[^a-zA-ZåäöÅÄÖ\s-]+$/
С квадратом закрытияКроме скобки, поставьте квадратную скобку спереди и дефис в конце:
/^[]a-zA-ZåäöÅÄÖ\s-]+$/
И если вам необходимо исключить как квадратные скобки, так и дефисы, то:
/^[^]a-zA-ZåäöÅÄÖ\s-]+$/
В этом вопросе одна интерпретация может быть следующей: вы хотите настаивать на буквенных символах вокруг дефисов, и хотите разрешить только пробелы в начале и в конце, и вы можете разрешить апострофы там, где разрешены дефисы, и вы хотите избежать последовательных дефисов.или апострофы.
/^\s*[a-zA-ZåäöÅÄÖ]*([a-zA-ZåäöÅÄÖ]+[-'][a-zA-ZåäöÅÄÖ]+)*\s*$/
Предупреждение: регулярное выражение формально проверено на Perl, а не на JavaScript.
Начало строки, ноль или более пробелов;ноль или более буквенных символов;ноль или более последовательностей «одного или нескольких буквенных символов плюс дефис или апостроф и одного или нескольких буквенных символов», за которыми следует конец строки.Вы можете добавить дополнительные скобки после первого \s*
и перед вторым \s*
, чтобы захватить полное имя.
Для Anna-nicole
первый альфа-член будет соответствовать Ann
, адругой альфа-термин будет соответствовать a-nicole
.Для Anonymous
первый член будет соответствовать всей строке, второй будет пустым.Для O'Reilly
первый член будет пустым, а второй будет соответствовать всей строке.Такие имена, как «C - d» и «Who''Me», будут отклонены (повторный дефис или апостроф не допускаются).Это позволило бы Smith-Jones-and-Son
в качестве имени и Smith-And-O'Reilly
.Это не позволит использовать начальные или конечные дефисы или апострофы.
Если вы хотите разрешить «имя-фамилию», вам понадобится два лота «ядра» регулярного выражения с \s+
между.И т.д.