Ash*_*iya 13 java string validation gwt
问候,
我正在开发GWT应用程序,用户可以用日语输入他的详细信息.但'userid'和'password'应该只包含英文字符(拉丁字母).如何验证字符串?
Bal*_*usC 35
您可以使用String#matches()一点正则表达式.拉丁字符涵盖\w.
所以这应该做:
boolean valid = input.matches("\\w+");
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这也包括数字和下划线_.不确定是否有害.否则你可以[A-Za-z]+改用它.
如果你想要覆盖变音符号(ä,é,ò等等,那些符号也是拉丁字符),那么你需要先对它们进行归一化,然后在匹配之前去除变音符号,因为没有(记录在案的)正则表达式,涵盖了变音符号.
String clean = Normalizer.normalize(input, Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
boolean valid = clean.matches("\\w+");
Run Code Online (Sandbox Code Playgroud)
更新:Java中有一个没有文档的正则表达式,它也涵盖了变音符号\p{L}.
boolean valid = input.matches("\\p{L}+");
Run Code Online (Sandbox Code Playgroud)
以上工作在Java 1.6.
小智 9
public static boolean isValidISOLatin1 (String s) {
return Charset.forName("US-ASCII").newEncoder().canEncode(s);
} // or "ISO-8859-1" for ISO Latin 1
Run Code Online (Sandbox Code Playgroud)
这是我的解决方案,并且效果很好
public static boolean isStringContainsLatinCharactersOnly(final String iStringToCheck)
{
return iStringToCheck.matches("^[a-zA-Z0-9.]+$");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30456 次 |
| 最近记录: |