Greetings,
I am developing GWT application where user can enter his details in Japanese. But the 'userid' and 'password' should only contain English characters(Latin Alphabet). How to validate Strings for this?
You can use String#matches()
with a bit regex for this. Latin characters are covered by \w
.
So this should do:
boolean valid = input.matches("\\w+");
This by the way also covers numbers and the underscore _
. Not sure if that harms. Else you can just use [A-Za-z]+
instead.
If you want to cover diacritical characters as well (ä, é, ò, and so on, those are per definition also Latin characters), then you need to normalize them first and get rid of the diacritical marks before matching, simply because there's no (documented) regex which covers diacriticals.
String clean = Normalizer.normalize(input, Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
boolean valid = clean.matches("\\w+");
Update: there's an undocumented regex in Java which covers diacriticals as well, the \p{L}
.
boolean valid = input.matches("\\p{L}+");
Above works at Java 1.6.