js和java中的length()判断字符串长度的方式不会考虑字符是汉字还是字母、数字、特殊字符,一个汉字也算一个字符长度,
但是oracle中varchar2类型会把汉字当做两个字符长度,这就产生了分歧,我们在判断用户输入字符串长度时就会产生问题。
解决方法之一:把汉字统一转换成某一特殊字符,比如 “*”,用正则表达式筛选出汉字后,替换成两个星号,即:“**”
java代码如下:
String regex = "[\\u4e00-\\u9fa5]+";
if(str.trim().replaceAll(regex, "**").length()>64){
//do something
}
js代码如下:
if(str.replace(/[^\x00-\xff]/g, "**").length)>100){
//do something
}