2010-11-28 5 views
3

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

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

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

Любые идеи по улучшению регулярного выражения?

ответ

5

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

/[\pL\pN_\-]+/ 
+0

Вы можете использовать `\ p {Pd}` вместо `-` (возможно), и вы можете использовать` \ p {Pc} `вместо` _` (возможно, но гораздо менее вероятно). – tchrist 2010-11-29 00:33:59

1

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

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

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

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

1

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

+0

ну, так как это текст описания, текст может содержать совершенно все, последовательность слов и символов, которые ограничивают эти последовательности, такие как «.», «!». или "?"; \ w не принимает öäÖÄüÜ .. – 2010-11-28 14:31:38

2

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

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

Хотя я не уверен, что «я» будет работать со столицами иностранных символов.

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