var obj ={v1:"汉字",v2:"A",v3:"a",v4:1};
判断汉字、数字、大小写字母都可以用正则表达式完成,当然对于数字,可能还需要先进行类型判断
- 汉字:
/[\u4E00-\u9FA5]/
,全汉字/^[\u4E00-\u9FA5]+$/
- 大写字母:
/[A-Z]/
,全大写/^[A-Z]+$/
- 小字字母类似
- 数字类似
判断数字类型
function isNumber(v) {
switch(typeof(v)) {
case "number":
return !isNaN(v)
case "string":
return /^\d+$/.test(v);
default:
return false;
}
}
如果 obj 是一个数组,通过循环就依次判断即可。如果 obj 是一个对象,使用 Object.keys(obj),取得所有键,再按键获取值依次判断即可。
代码如下:
var obj ={v1:"汉字",v2:"A",v3:"a",v4:1,v5:"1"};
var hanReg = /^[\u4E00-\u9FA5]+$/
var upCharReg = /^[A-Z]+$/;
var lowCharReg = /^[a-z]+$/;
var numReg = /^[\d]+$/;
Object.keys(obj).forEach(function (k) {
var val = obj[k];
if(hanReg.test(val)){
console.log("obj exists hanzi");
}else if(upCharReg.test(val)) {
console.log("obj exists upChar");
}else if(lowCharReg.test(val)){
console.log("obj exists lowChar");
}else if(isNumber(val)){
console.log("obj exists num");
}
});
function isNumber(v) {
switch(typeof(v)) {
case "number":
return !isNaN(v)
case "string":
return numReg.test(v);
default:
return false;
}
}
注意
(1)首先JavaScript 里没有var obj ={"汉字","A","a",1};
这种语法,要么是数组语法 var obj =[“汉字”,”A”,”a”,1];,要么是对象语法 var obj ={v1: “汉字”, v2: “A”, v3: “a”, v4: 1};。
(2)
.
表示除\n之外的任意字符
*
表示匹配0-无穷
+
表示匹配1-无穷
?
等价于匹配长度{0,1}
(3)\u后面加上十六进制代码来表示Unicode字符。
(4)分为全为汉字或者存在汉字两种情况