Diacritcs в регулярном выражении GWT - PullRequest
4 голосов
/ 14 февраля 2012

Если я попытаюсь сопоставить строку регулярного выражения с диакритическими знаками (что-то вроде ^ [a-zA-Z0-9áàAÁÁ] {0,100} $), это совпадет с Báhhh на стороне сервера (я вызываю одну и ту же проверку дважды)но потерпит неудачу на стороне клиента.Я уже изменил завершение java-класса, но он все еще не соответствует.

Существует ли специальный класс регулярных выражений gwt для диакритических знаков или я что-то упустил?

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Странно, поскольку /^[a-zA-Z0-9áàAÁÁ ]{0,100}$/.test('Báhhh') возвращает мне true в консоли Chrome JS.

Я подозреваю, что это проблема Unicode, где á может быть закодирован несколькими способами: U + 0061 U + 0301, U + 0061 U + 0341 или U + 00E1.

Может быть, попробовать /^(?:[a-zA-Z][\u0301\u0341]?|[áàÁÁ0-9 ]){0,100}$/

1 голос
/ 14 февраля 2012

Регулярные выражения Java и JavaScript имеют различия в реализациях, которые не всегда могут быть четко видны.Я предлагаю вам использовать разные валидаторы для каждого случая - взгляните на класс RegExp в GWT :

Существует несколько небольших несовместимостей между двумя реализациями.Специфичные для Java конструкции в синтаксисе регулярных выражений (например, [az && [^ bc]], (? <= Foo), \ A, \ Q) работают только в реализации на чистом Java, а не в реализации GWT, и не отклоняютсяили.Кроме того, специфичные для Javscript конструкции $ `и $ 'в выражении замены работают только в реализации GWT, а не в реализации чистой Java, которая их отвергает. </p>

...