Как совместить символы с акцентом с PHP preg?

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

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

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

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

Solutions Collecting From Web of "Как совместить символы с акцентом с PHP preg?"

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

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

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

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

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

которые улавливают также акцентированных персонажей

Какие символы считаются «символами слов», зависит от локали. Вы должны установить локаль, которая имеет эти символы в своем естественном алфавите, и использовать модификатор /u для регулярного выражения, например:

 $str = 'perché'; setlocale(LC_ALL, 'it_IT@euro'); echo preg_match('#^\w+$#u', $str);