理解正则表达式的全局匹配
理解全局匹配:
https://blog.csdn.net/aitangyong/article/details/51470854
解决 js相同的正则多次调用test()返回的值却不同的问题:
https://blog.csdn.net/qq_30100043/article/details/80092012
问题描述
// 2012-12-12 12:12:12
var regex = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g;
console.log(regex.lastIndex); // 0
// true
alert(regex.test("2012-12-12 12:12:12"));
console.log(regex.lastIndex); // 19
// false
alert(regex.test("2012-12-12 12:12:12"));
解决方案1
// 2012-12-12 12:12:12
var regex = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g;
// true
alert(regex.test("2012-12-12 12:12:12"));
regex.lastIndex = 0;
// true
alert(regex.test("2012-12-12 12:12:12"));
解决方案2
删除正则表达式中代表全局的 ‘g’。
结论: 对于全局的正则表达式对象,不能重复调用。regex.test第一次从0开始查找,可以匹配,第二次就不是从0(从19)开始了,所以不能匹配。