Как я соответствую символам с диакритикой PHP preg?

Я хотел бы дать моим пользователям, опция к не только заполняет буквы и числа, но также и “специальные” буквы как “á”, “é”, и т.д. Однако я не хочу, чтобы они смогли использовать символы как “!”, "%”, и т.д.

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

Теперь я имею:

$reg = '/^[\w\-]*$/';
20
задан TRiG 27 February 2014 в 12:23
поделиться

3 ответа

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

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

\ p {l} описывает класс символов письма Unicode.

39
ответ дан 29 November 2019 в 23:27
поделиться

Вы можете попробовать с этим Regex:

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

, которые поймают также символы

4
ответ дан 29 November 2019 в 23:27
поделиться

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

$str = 'perché';
setlocale(LC_ALL, 'it_IT@euro');
echo preg_match('#^\w+$#u', $str);
4
ответ дан 29 November 2019 в 23:27
поделиться
Другие вопросы по тегам:

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