Хорошо, я читал о regex весь день и все еще не понимаю его правильно. То, что я пытаюсь сделать, это проверить имя, но функции, которые я могу найти для этого в Интернете, используют только [a-zA-Z]
, оставляя символы, которые мне нужно принять.
Мне в основном нужно регулярное выражение, которое проверяет, что имя не менее двух слов, и что оно не содержит чисел или специальных символов, таких как !"#¤%&/()=...
, однако слова могут содержать символы, такие как æ, é, Â и т.д...
Примером принятого имени будет: "John Elkjærd" или "André Svenson"
Непринятое имя будет:" Hans "," H 4 nn 3 Андерсен "или" Мартин Хенриксен ! "
Если это важно, я использую клиентскую часть функции javascript .match()
и хочу использовать только php preg_replace()
только на отрицательной стороне сервера. (удаление несоответствующих символов).
Любая помощь будет высоко оценена.
Обновление:
Хорошо, спасибо Alix Axel answer У меня есть важная часть вниз, на стороне сервера.
Но поскольку страница из LightWing отвечает, я не могу найти что-либо о поддержке юникода для javascript, поэтому у меня оказалось половина решения для клиента стороне, просто проверяя хотя бы два слова и минимум 5 символов:
if(name.match(/\S+/g).length >= minWords && name.length >= 5) {
//valid
}
Альтернативой было бы указать все символы Юникода, как предложено в переменном ответе, в результате чего я мог бы сделать что-то вроде этого вместе с решением выше, но это хотя и непрактичен.