Regex для ввода формы описания - PullRequest
3 голосов
/ 28 ноября 2010

текстовая область является частью моей формы.Пользователь должен написать небольшой текст, и я хочу проверить этот текст.Сейчас я использую следующее регулярное выражение:

/^[0-9a-zA-ZäöüÄÖÜ_\-']+$/

Хотя я упомянул äöüÄÖÜ в регулярном выражении, он считает все слова с äöü .. недействительными.Кроме того, он не принимает пустые места.

Есть идеи, как улучшить регулярное выражение?

Ответы [ 4 ]

5 голосов
/ 28 ноября 2010

Используйте регулярное выражение с поддержкой Юникода:

/[\pL\pN_\-]+/
2 голосов
/ 28 ноября 2010

модификатор PCRE u позволяет использовать utf-8.Вам также не хватает пробела в регулярном выражении, и вы можете немного его сжать:

/^[0-9a-zäöü\- ]+$/ui

Хотя я не уверен, будет ли 'i' работать с заглавными буквами иностранных символов.

Вы также можете включить пунктуацию.

1 голос
/ 28 ноября 2010

Вы можете просто использовать \w для обозначения всех символов "слова" (буквы, цифры и т. Д.). Таким образом, регулярное выражение будет
/^[\w_\-' ]+$/
Какой текст от пользователя вы считаете "действительный "?

1 голос
/ 28 ноября 2010

Во-первых, у вас может быть проблема с кодировкой, поэтому äöüÄÖÜ зарегистрированы как недействительные.Я не пользователь PHP, поэтому я не могу ответить на ваш вопрос напрямую, но вам может помочь эта страница .Кроме того, использование соответствующих классов символов может работать лучше, чем явное написание всех соответствующих букв.Увы, это, вероятно, также зависит от конфигурации кодирования.

Во-вторых, вам нужно пробел в вашем регулярном выражении, поэтому

/^[0-9a-z A-ZäöüÄÖÜ_\-']+$/ // note space after a-z

должно работать.Обратите внимание, что я написал в предыдущем абзаце об использовании классов символов.\w может быть достаточно вместо a-zA-ZäöüÄÖÜ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...