Проверка электронной почты Java для UTF - PullRequest
1 голос
/ 05 октября 2011

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

^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$

Но как мне проверить его на UTF?

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 февраля 2013

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

"[^\\x00-\\x7F]"

Это будет любой не-ASCII символ.

0 голосов
/ 05 октября 2011

Вы пытаетесь убедиться, что он действителен с w.r.t. RFC 5335, раздел 4.1 ?

Если это так, вы можете только проверить, что byte[] является действительным UTF-8. Не имеет смысла пытаться проверить последовательность кодовых единиц UTF-16 (Java char s) или кодовые точки являются допустимыми UTF-8, так как UTF-8 является отображением строки байта в строку кода и UTF -16 является отображением из кодовых единиц -> unicode-scalar-values ​​. Раздел 3.9 «Формы кодирования Unicode» объясняет все это.

Лучший способ определить, является ли byte[] правильно сформированной последовательностью UTF-8, - это использовать один из встроенных декодеров, например, StandardCharsets.UTF8 или эквивалент гуавы Charsets.UTF8.

...