正则表达式\d{5}为什么只能匹配123456789中的12345,而不能匹配23456等等?
正则表达式\d{5}为什么只能匹配123456789中的12345,而不能匹配23456等等?...
正则表达式\d{5}为什么只能匹配123456789中的12345,而不能匹配23456等等?
展开
展开全部
因为是从前往后扫描
var str = "123456789";
var reg = /\d{5}/g;
var arr = str.match(reg);
// ["12345"]
console.info(arr);
reg = /\d{2}(\d{5})(?=\d?)/g;
while(reg.exec(str)) console.log(RegExp.$1);
追问
没太明白,既然是从前往后扫描,那应该有5种结果啊,分别是12345、23456、34567、45678、56789,为什么只有12345呢?
而且如果待扫描文字是1234567890,那么匹配的结果是12345和67890,而非仅有12345。这又如何解释?
追答
/\d{5}/g;
因为这样写就是5个数前面没有数的表示法,所以就是1种情况,大白
/\d{2}(\d{5})(?=\d?)/g;
前面2个数的5个数
/\d{1}(\d{5})(?=\d?)/g;
前面1个数的5个数
换句话说就是:
每次匹配后,就会将原来的去掉匹配后的字符串再次进行匹配,而不是在原来的基础上匹配
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询