Мне нужно обновить одно из моих регулярных выражений - PullRequest
0 голосов
/ 05 июня 2011

В настоящее время я использую следующее регулярное выражение для проверки textArea в JSF:

"^([a-zA-Z0-9]+[a-zA-Z0-9 ]+$)?"

Это позволяет мне иметь несколько слов, а также прописные и строчные буквы, но все же недостаточно, мне нужно сделатьэто лучше.Также должно быть разрешено всего несколько специальных символов.Есть ли у вас какие-либо идеи, как я могу настроить его, чтобы иметь возможность:

-Позволить следующие 4 символа , . ; :

-Позволить также специальныебуквы от не английского алфавита, это буквы, которые необходимы: Đ đ Ž ž Ć ć Č č Š š

Я настроил свое веб-приложение на использование UTF-8, если бы регулярное выражение могло просто разрешать эти специальные буквы, это было бы здорово, потому что было бы меньше кода для проверки каждого поля каждый раз.

Ответы [ 2 ]

4 голосов
/ 05 июня 2011

Если все специальные символы принадлежат одному и тому же юникод-боку, вы можете сопоставить их с выражением \p{InGreek}, заменив Greek блоком, из которого получены символы.Вы также можете использовать отрицательный вид сзади, чтобы предотвратить совпадение начального пробела.Это сделало бы регулярное выражение:

^(?! )[\p{Alnum}\p{InLatinExtendedA},.;: ]+$

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

^\s*([\p{Alnum}\p{InLatinExtendedA},.;: ]+?)\s*$

Первая группа захвата будет действительной строкой без начальных или конечных пробелов.

4 голосов
/ 05 июня 2011

Просто добавьте их в набор символов, помеченный []

"^([a-zA-Z0-9,.;:ĐđŽžĆćČ芚]+[a-zA-Z0-9 ,.;:ĐđŽžĆćČ芚]+$)?"

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

"^([a-zA-Z0-9,.;:ĐđŽžĆćČ芚][a-zA-Z0-9 ,.;:ĐđŽžĆćČ芚]+$)?"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...