Java验证字符串只能是数字和字母_Java判断字符串是字母
程序员文章站
2022-02-22 08:16:36
...
今天在开发DD记账项目的时候、遇到这么一个问题、就是发现以前的用户注册的时候用户名都是用的中文、这个之前没有预料到、现在想补掉这个问题、自然就涉及到java判断字符串是否为数字或中文或字母、总结了一下几种方法、供大家参考
1、字符方法
各种字符的unicode编码的范围:
* 汉字:[0x4e00,0x9fa5](或十进制[19968,40869])
* 数字:[0x30,0x39](或十进制[48, 57])
*小写字母:[0x61,0x7a](或十进制[97, 122])
* 大写字母:[0x41,0x5a](或十进制[65, 90])
public static boolean isLetterDigitOrChinese(String str) { String regex = "^[a-z0-9A-Zu4e00-u9fa5] $";//其他需要,直接修改正则表达式就好 return str.matches(regex); }
2、正则
/** * 判断该字符串是否为字母和数字 * @param str * @return */ public static boolean isNumericOrABC(String str){ String regEx="[A-Z,a-z,0-9,-]*"; Pattern pattern = Pattern.compile(regEx); return pattern.matcher(str).matches(); }
3、判断是否为汉字
public boolean vd(String str){ char[] chars=str.toCharArray(); boolean isGB2312=false; for(int i=0;i<chars.length;i ){ byte[] bytes=("" chars[i]).getBytes(); if(bytes.length==2){ int[] ints=new int[2]; ints[0]=bytes[0]& 0xff; ints[1]=bytes[1]& 0xff; if(ints[0]>=0x81 && ints[0]<=0xFE && ints[1]>=0x40 && ints[1]<=0xFE){ isGB2312=true; break; } } } return isGB2312; }