Я хотел бы дать моим пользователям, опция к не только заполняет буквы и числа, но также и “специальные” буквы как “á”, “é”, и т.д. Однако я не хочу, чтобы они смогли использовать символы как “!”, "%”, и т.д.
Существует ли способ записать regex для выполнения этого? (Предпочтительно, не указывая каждую специальную букву.)
Теперь я имею:
$reg = '/^[\w\-]*$/';
Вы можете использовать Свойства символов Unicode для описания символов:
/^[\p{L}-]*$/u
\ p {l}
описывает класс символов письма Unicode.
Вы можете попробовать с этим Regex:
$reg = '~[^\\pL\d]+~u';
, которые поймают также символы
Какие символы считаются «символами слова», зависит от локали. Вы должны установить локаль, который имеет те персонажи в своем естественном алфавите, и используют модификатор / U
для Regexp, например:
$str = 'perché';
setlocale(LC_ALL, 'it_IT@euro');
echo preg_match('#^\w+$#u', $str);