Вопрос по regex, pcre, php – Как мне сопоставить акцентированные символы с PHP preg?

19

Я хотел бы дать своим пользователям возможность не только заполнять буквы и цифры, но и «специальный" буквы типа «а», «е»и т. д. Однако я не хочу, чтобы они могли использовать такие символы, как «!», «@», «%», так далее.

Есть ли способ написать регулярное выражение для достижения этой цели? (Желательно без указания каждой специальной буквы.)

Теперь у меня есть:

$reg = '/^[\w\-]*$/';

Ваш Ответ

3   ответа
38

Вы могли бы использоватьСвойства символов Юникода описать персонажей:

/^[\p{L}-]*$/u

\p{L} описывает класс букв Unicode.

Кажется, чтобы сделать трюк. Спасибо за быстрый ответ!! Maurice
4

становить локаль, которая имеет эти символы в своем естественном алфавите, и использовать/u модификатор для регулярного выражения, как это:

$str = 'perché';
setlocale(LC_ALL, '[email protected]');
echo preg_match('#^\w+$#u', $str);
Безразлично»Кажется, тоже не работает. Но ГамбоРешение сработало. Спасибо за ответ Maurice
4

Вы можете попробовать это регулярное выражение:

$reg = '~[^\\pL\d]+~u';

которые ловят также акцентированные символы

Безразлично»кажется, работает на моем сервере. Но Гамбоответ сработал. Спасибо за ответ Maurice

Похожие вопросы