在js中校验汉字的长度时,通常有个惯性都认为一个汉字占两个字符,这是不正确的,具体校验如下:
var zwcm = document.getElementById("zwcm").value;
var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]");
if(zwcm!=""){
if(zwcm.getBytes()>3){
for (var i = 0; i < zwcm.length; i++) {
if(zwcm.substr(i, 1).search(pattern)!=-1){
alert("请录入正确的船名!");
return;
}
}
}else{
alert("中文船名长度不能低于4个字符!");
return;
}
}
String.prototype.getBytes = function() {
var cArr = this.match(/[^\x00-\xff]/ig);
return this.length + (cArr == null ? 0 : cArr.length);
}