Commit 7d3f0ba9 authored by 技术部-任文超's avatar 技术部-任文超

优化中文姓名校验工具类,支持少量扩展汉字(按需添加)

parent 603a8df8
...@@ -17,15 +17,17 @@ import java.util.regex.Pattern; ...@@ -17,15 +17,17 @@ import java.util.regex.Pattern;
@Slf4j @Slf4j
public class ValidationUtil { public class ValidationUtil {
private static String phoneRegExp = "^1[3456789][0-9]{9}$"; private static final String phoneRegExp = "^1[3456789][0-9]{9}$";
private static String chineseNameRegExp = "^[\u4e00-\u9fff]+(\\.|·)?[\u4e00-\u9fff]+$"; private static final String chineseNameRegExp = "^[\u4e00-\u9fff]+(\\.|·)?[\u4e00-\u9fff]+$";
private static String ipv4RegExp = "^((2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\\.){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)$"; private static final String chineseNameExtendRegExp = "^[\u4dae\u4e00-\u9fff]+(\\.|·)?[\u4dae\u4e00-\u9fff]+$";
private static String localIpv4RegExp = "^((172\\.(1[0-6]|2[0-9]|3[01]))|(192\\.168|169\\.254)|((127|10)\\.(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)))(\\.(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)){2}$"; private static final String ipv4RegExp = "^((2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\\.){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)$";
private static final String localIpv4RegExp = "^((172\\.(1[0-6]|2[0-9]|3[01]))|(192\\.168|169\\.254)|((127|10)\\.(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)))(\\.(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)){2}$";
private static Pattern phonePattern = Pattern.compile(phoneRegExp); private static final Pattern phonePattern = Pattern.compile(phoneRegExp);
private static Pattern chinesePattern = Pattern.compile(chineseNameRegExp); private static final Pattern chinesePattern = Pattern.compile(chineseNameRegExp);
private static Pattern ipv4Pattern = Pattern.compile(ipv4RegExp); private static final Pattern chineseExtendPattern = Pattern.compile(chineseNameExtendRegExp);
private static Pattern localIpv4Pattern = Pattern.compile(localIpv4RegExp); private static final Pattern ipv4Pattern = Pattern.compile(ipv4RegExp);
private static final Pattern localIpv4Pattern = Pattern.compile(localIpv4RegExp);
public static boolean validatePhoneNo(String phoneNo) { public static boolean validatePhoneNo(String phoneNo) {
boolean lengthValid = StringUtils.isNotBlank(phoneNo) && phoneNo.length() == 11 && StringUtils.isNumeric(phoneNo); boolean lengthValid = StringUtils.isNotBlank(phoneNo) && phoneNo.length() == 11 && StringUtils.isNumeric(phoneNo);
...@@ -40,15 +42,16 @@ public class ValidationUtil { ...@@ -40,15 +42,16 @@ public class ValidationUtil {
if (StringUtils.isBlank(chinese)) { if (StringUtils.isBlank(chinese)) {
return false; return false;
} }
Matcher matcher = chinesePattern.matcher(chinese); boolean valid = chinesePattern.matcher(chinese).find();
boolean valid = matcher.find();
if(!valid){ if(!valid){
StringBuilder uniCodeTemp = new StringBuilder(); StringBuilder uniCodeTemp = new StringBuilder();
for(int i=0;i<chinese.length();i++){ for(int i=0;i<chinese.length();i++){
uniCodeTemp.append("\\u").append(Integer.toHexString((int)chinese.charAt(i))); uniCodeTemp.append("\\u").append(Integer.toHexString((int)chinese.charAt(i)));
} }
log.info("[ValidationUtil][validateChinese]:[chinese][unicode][length]:[{}][{}][{}]", chinese, chinese.length(), uniCodeTemp); log.info("[ValidationUtil][validateChinese]:[chinese][unicode][length]:[{}][{}][{}]", chinese, chinese.length(), uniCodeTemp);
} }
// 兼容扩展字集合
valid = Boolean.logicalOr(valid, chineseExtendPattern.matcher(chinese).find());
return valid; return valid;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment