varreg = /^((\d{4})+[-]+(\d{2})+[-]+(\d{2}))$/g; vardate1 ="2012-03-27"; vardate2 ="2012-03-27"; console.log(reg.test(date1)); console.log(reg.test(date2));
執(zhí)行上面的js代碼,你會看到控制臺里面打印 true 和 false!
現(xiàn)在檢測出是因為 reg 正則表達式定義里面最后一個(全局匹配參數(shù)) g 影響的!
那么我有個疑問,為什么這個參數(shù)會影響檢測結果呢?
答案: RegExp有個lastIndex, 加了g之匹配成功不重置,匹配失敗才重置, 所以導致這行第一次成功,第二次失敗,如此往復
不加入g,則只返回第一個匹配,無論執(zhí)行多少次均是如此,如果加入g,則第一次執(zhí)行也返回第一個匹配,再執(zhí)行第二個匹配,依次類推。