java 判断字符串中有汉字 (常用正则表达式)
今天在开发中碰到了判断字符串中是否有汉字的问题,方便起见,记录下来以便后期查看。
通过正则表达式判断
1、判断汉字
String address = "北京市朝阳区阜通东大街6号";
String lonAndLat = "";
Pattern p = Pattern.compile("[u4e00-u9fa5]");
if (StringUtils.isNotBlank(address)) {
Matcher m = p.matcher(address);
if(m.find()) {
// m.find()判断为true,表示字符串中含有中文
lonAndLat = address;
address = "被替代";
System.out.println("address = " + address + "lonAndLat = " + lonAndLat);
}
}
2、判断数字
Pattern pattern = Pattern.compile("[0-9]*");
String decimal= "3.1415926";
String num = decimal.replace(".", "").trim();
boolean flag = pattern.matcher(num).matches();
if(!flag) {
// flag为false,表示字符串中剩下的字符不能匹配数字正则条件
System.out.println("aaa");
}
3、常用的正则表达式( 通过 )
(1)校验数字的正则表达式
[0-9]*$ // 数字
d{n}$ // n 位数字
d{n,}$ // 至少n位的数字
d{m,n}$ // m ~ n位的数字
(0|[1-9][0-9]*)$ // 零和非零开头的数字
([1-9][0-9]*)+(.[0-9]{1,2})?$ // 非零开头的最多带两位小数的数字
(-)?d+(.d{1,2})?$ // 带 1 ~ 2 位小数的正数或负数
(-|+)?d+(.d+)?$ // 正数、负数、和小数
[0-9]+(.[0-9]{2})?$ // 有两位小数的正实数
[0-9]+(.[0-9]{1,3})?$ // 1 ~ 3 位小数的正实数
[1-9]d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^+?[1-9][0-9]*$ // 非零的正整数
-[1-9]d*$ 或 ^-[1-9][0-9]*$ // 非零的负整数
d+$ 或 ^[1-9]d*|0$ // 非负整数
-[1-9]d*|0$ 或 ^((-d+)|(0+))$ // 非正整数
(-?d+)(.d+)?$ 或 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ // 浮点数
d+(.d+)?$ 或 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ // 非负浮点数
((-d+(.d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ // 非正浮点数
[1-9]d*.d*|0.d*[1-9]d*$ 或 ^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$ // 正浮点数
-([1-9]d*.d*|0.d*[1-9]d*)$ 或 ^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$ // 负浮点数
(2)校验字符的正则表达式
[u4e00-u9fa5]{0,}$ // 汉字
[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$ // 英文和数字
.{3,20}$ // 长度为3-20的所有字符
[A-Za-z]+$ // 26个英文字母组成的字符串
[A-Z]+$ // 26个大写英文字母组成的字符串
[a-z]+$ // 26个小写英文字母组成的字符串
[A-Za-z0-9]+$ // 数字和26个英文字母组成的字符串
w+$ 或 ^w{3,20}$ // 数字、26个英文字母或者下划线组成的字符串
[u4E00-u9FA5A-Za-z0-9_]+$ // 中文、英文、数字包括下划线
[u4E00-u9FA5A-Za-z0-9]+$ 或 ^[u4E00-u9FA5A-Za-z0-9]{2,20}$ // 中文、英文、数字但不包括下划线等符号
[^%&,;=?$x22]+ // 可以输入含有^%&,;=?$"等字符
[^~x22]+ // 禁止输入含有~的字符
(3)特殊需求的正则表达式
