正则表达式\d{5}为什么只能匹配123456789中的12345,而不能匹配23456等等?

正则表达式\d{5}为什么只能匹配123456789中的12345,而不能匹配23456等等?... 正则表达式\d{5}为什么只能匹配123456789中的12345,而不能匹配23456等等? 展开
 我来答
yugi111
2015-12-06 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
因为是从前往后扫描

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个数

换句话说就是:
每次匹配后,就会将原来的去掉匹配后的字符串再次进行匹配,而不是在原来的基础上匹配
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式