Объекты шаблона не совпадают с разными языками - PullRequest
4 голосов
/ 03 января 2012

У меня есть следующее выражение reg, которое отлично работает, когда пользователь вводит английский.Но всегда происходит сбой при использовании португальских символов.

Pattern p = Pattern.compile("^[a-zA-Z]*$");
Matcher matcher = p.matcher(fieldName);

if (!matcher.matches())
{
   ....
}

Есть ли способ заставить объект шаблона распознавать допустимые португальские символы, такие как ÁÂÃÀÇÉÊÍÓÔÕÚç ....?

Спасибо

Ответы [ 3 ]

5 голосов
/ 03 января 2012

Вы хотите регулярное выражение, которое будет соответствовать классу всех букв алфавита. Во всех сценариях мира их загружает , но, к счастью, мы можем сказать движку RE Java 6, что мы находимся после буквы, и он будет использовать магию классов Unicode для всего остального. В частности, класс L соответствует всем типам букв, верхним, нижним и «о, это понятие не применимо в моем языке»:

Pattern p = Pattern.compile("^\\p{L}*$");
// the rest is identical, so won't repeat it...

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

5 голосов
/ 03 января 2012

Должен работать с "^\p{IsAlphabetic}*$", который учитывает символы Юникода.Для справки смотрите опции в http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

3 голосов
/ 03 января 2012

Ознакомьтесь с документом Pattern и, в частности, с разделом Юникод:

Блоки и категории Unicode записываются с помощью \ p и \ P конструирует как в Perl. \ p {prop} соответствует, если вход имеет свойство prop, тогда как \ P {prop} не совпадает, если вход имеет это свойство. Блоки указываются с префиксом In, как в InMongolian. категории может быть указан с дополнительным префиксом Is: Оба \ p {L} и \ p {IsL} обозначить категорию букв Unicode. Блоки и категории могут быть используется как внутри, так и снаружи класса символов.

(для Java 1.4.x). Я подозреваю, что вы заинтересованы в идентификации букв Unicode, а не букв португальского?

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