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

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

parent 603a8df8
......@@ -17,15 +17,17 @@ import java.util.regex.Pattern;
@Slf4j
public class ValidationUtil {
private static String phoneRegExp = "^1[3456789][0-9]{9}$";
private static 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 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 phoneRegExp = "^1[3456789][0-9]{9}$";
private static final String chineseNameRegExp = "^[\u4e00-\u9fff]+(\\.|·)?[\u4e00-\u9fff]+$";
private static final String chineseNameExtendRegExp = "^[\u4dae\u4e00-\u9fff]+(\\.|·)?[\u4dae\u4e00-\u9fff]+$";
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 Pattern chinesePattern = Pattern.compile(chineseNameRegExp);
private static Pattern ipv4Pattern = Pattern.compile(ipv4RegExp);
private static Pattern localIpv4Pattern = Pattern.compile(localIpv4RegExp);
private static final Pattern phonePattern = Pattern.compile(phoneRegExp);
private static final Pattern chinesePattern = Pattern.compile(chineseNameRegExp);
private static final Pattern chineseExtendPattern = Pattern.compile(chineseNameExtendRegExp);
private static final Pattern ipv4Pattern = Pattern.compile(ipv4RegExp);
private static final Pattern localIpv4Pattern = Pattern.compile(localIpv4RegExp);
public static boolean validatePhoneNo(String phoneNo) {
boolean lengthValid = StringUtils.isNotBlank(phoneNo) && phoneNo.length() == 11 && StringUtils.isNumeric(phoneNo);
......@@ -40,15 +42,16 @@ public class ValidationUtil {
if (StringUtils.isBlank(chinese)) {
return false;
}
Matcher matcher = chinesePattern.matcher(chinese);
boolean valid = matcher.find();
boolean valid = chinesePattern.matcher(chinese).find();
if(!valid){
StringBuilder uniCodeTemp = new StringBuilder();
for(int i=0;i<chinese.length();i++){
uniCodeTemp.append("\\u").append(Integer.toHexString((int)chinese.charAt(i)));
}
log.info("[ValidationUtil][validateChinese]:[chinese][unicode][length]:[{}][{}][{}]", chinese, chinese.length(), uniCodeTemp);
StringBuilder uniCodeTemp = new StringBuilder();
for(int i=0;i<chinese.length();i++){
uniCodeTemp.append("\\u").append(Integer.toHexString((int)chinese.charAt(i)));
}
log.info("[ValidationUtil][validateChinese]:[chinese][unicode][length]:[{}][{}][{}]", chinese, chinese.length(), uniCodeTemp);
}
// 兼容扩展字集合
valid = Boolean.logicalOr(valid, chineseExtendPattern.matcher(chinese).find());
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