1、Java全角半角字符的校验:
半角字符是指英文字母、数字以及一些特殊符号,例如A-Z,a-z,0-9,!@#$%^&*()等。半角字符的宽度只有一个字符宽度。
全角字符是指汉字、日文和韩文等非英文字符,以及一些特殊符号。全角字符的宽度通常为半角字符的两倍。
半角
半角正则表达式:[\x00-\xff]
x00是用十六进制表示的ASCII码,[\x00-\xff]表示所有的ASCII码,一共是256个。半角字符都在这里。每个半角字符占用一字节空间(一字节有8位)。
全角
全角正则表达式:[^\x00-\xff]
不在ASCII码表里可以认为都是全角。每个全角字符占用两字节空间。
参考链接:https://blog.csdn.net/weixin_38883338/article/details/89436718
扩充: 在Unicode字符集中,全角字符的编码范围是\uFF00到\uFFEF,而半角字符的编码范围是\u0020到\u007E。
实际应用1:判断字符是否是全角字符
Stirng sfzhm = "";
char[] chars = sfzhm.toCharArray();
for (int i = 0; i < sfzhm.length(); i++) {
String temp = valueOf(chars[i]);
if(temp.matches("[^\\x00-\\xff]")){
log.error(sfzhm + "[身份证号]包含全角字符;");
}
}
or
public static boolean isFullWidthChar(char c) { //判断字符是全角还是半角
return c >= '\uFF00' && c <= '\uFFEF';
}
实际应用2:判断数字是否是半角数字
public static boolean isHalfWidthDigit(String input) {
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c < '0' || c > '9') {
return false;
}
}
return true;
}