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)特殊需求的正则表达式

经验分享 程序员 微信小程序 职场和发展