Во многих диалектах регулярных выражений в классе символов простой дефис/минус должен быть первым или последним:
/^[-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+
между ними. И т.д.
В настоящее время вы разрешаете места на обоих концах - вы тоже хотите их ограничить? И вы хотите объявить вне закона «Нэнси - О'Хара» (с пробелами вокруг тире), и как насчет апострофа в фамилии? –
@ Джонатан: Да, мне тоже хотелось бы, чтобы вы упомянули об этом. – 2010-10-24 19:04:49