请教下,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()操作,再进行判断

推荐问题