请教:根据对象可枚举属性来校验

let rule = {
    name: /^\S/, 
    password: /^([A-Za-z0-9]){6,16}$/
}

let user = {
    name: 'xiaoming',
    password: '1234'
}

if(rule.name.test(user.name)){
    console.log('name 通过')
}else{
   console.log('name 不通过') 
}

if(rule.password.test(user.password)){
    console.log('password 通过')
}else{
   console.log('password 不通过') 
}

如果user属性很多的话,这样子校验正则很啰嗦。是否有更好的写法?

阅读 1.7k
1 个回答

看了一下示例代码,如果说user属性key都能在rule找到对应的key的话,可以这么写:

let rule = {
    name: /^\S/, 
    password: /^([A-Za-z0-9]){6,16}$/
}

let user = {
    name: 'xiaoming',
    password: '1234'
}
for(key in user){
  if(rule[key]) { 
    if(rule[key].test(user[key])){
         console.log(key+' pase');
    }else{
         console.log(key+' fail')
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题