Мне нужна функция или регулярное выражение для проверки строк, содержащих альфа-символы (включая французские), знак минус (-), точку (.) И пробел (исключая все остальное)
благодаря
/^[a-zàâçéèêëîïôûùüÿñæœ .-]*$/i
Использование /i
для нечувствительности к регистру, чтобы сделать вещи проще. Если вы не хотите разрешать пустые строки, измените *
на +
.
Пытаться:
/^[\p{L}-. ]*$/u
Это говорит:
^ Start of the string [ ... ]* Zero or more of the following: \p{L} Unicode letter characters - dashes . periods spaces $ End of the string /u Enable Unicode mode in PHP
[\w .-]
должно быть достаточно, но вам нужно будет \w
рассмотреть локаль и / или поместить ее в режим Unicode, поэтому \w
соответствует тому, что Unicode определяет как буквенно-цифровые символы. Как это сделать на PHP, возможно, это просто Google.
Упрощенное решение:
/^[a-zA-ZÀ-ÿ-. ]*$/
Объяснение:
^ Start of the string [ ... ]* Zero or more of the following: az lowercase alphabets AZ Uppercase alphabets À-ÿ Accepts lowercase and uppercase characters including letters with an umlaut - dashes . periods spaces $ End of the string
Эта строка регулярного выражения проходит весь текст французского текста cirano de bergerac: (вам нужно будет удалить символы языка разметки http://www.gutenberg.org/files/1256/1256-8.txt
^([0-9A-Za-z\u00C0-\u017F\ ,.\;'\-()\s\:\!\?\"])+
Это может подойти:
/^[ a-zA-Z\xBF-\xFF\.-]+$/
Он позволяет добавлять несколько дополнительных символов, например ÷, но он обрабатывает немало символов с акцентом.
/[A-Za-z-\.\s]/u
должен работать. / U для кодирования UTF-8