请教下,js正则表达式,var reg=/\S+/g;reg.test('1');一会为true,一会为false,为什么

1、输入框不能为空,应该怎么写?

var Validators={
    regNoSpace:/\S+/g,
    checkNoSpace:function(str){
        return Validators.regNoSpace.test(str);
    }
}

clipboard.png

lastIndex:

clipboard.png

阅读 4.6k
2 个回答

正则匹配全局后 lastIndex会加1,下一次匹配会变成从第二位开始,而你test里面只有1位,所以匹配失败,匹配失败后lastIndex会变成0,再下一次匹配从第一位开始,匹配成功.....
要么去掉/g,要么手动把reg.lastIndex=0

第二次执行test时,lastIndex值已经改变,可参考test

关于输入框不能为空:拿到输入框的值后,trim()操作,再进行判断

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题