如何使用JavaScript的match方法统计字符串中点的出现次数
使用match方法统计字符串中'.'的数量
嗨,这个问题我之前也碰到过!你用string.match(/\./)没成功,是因为默认的正则表达式只会匹配第一个符合条件的字符,不会遍历整个字符串找所有匹配项。
解决方法很简单,只需要给正则加上全局匹配标志g,这样match就会返回所有匹配到的.组成的数组,数组的长度就是你要的数量啦。
举个具体的例子,针对你的字符串:
const str = 'abcd.abcd..'; // 带全局标志的正则匹配 const dotMatches = str.match(/\./g); // 统计数量,处理没有匹配到的情况(避免null.length报错) const dotCount = dotMatches ? dotMatches.length : 0; console.log(dotCount); // 输出 3
如果你用ES6+的语法,还可以简化成更简洁的写法:
const dotCount = str.match(/\./g)?.length || 0;
为什么之前的写法不行?因为不带g的match返回的是一个包含第一个匹配项、捕获组等信息的数组(或者null),而不是所有匹配结果。加上g之后,它才会返回所有匹配到的字符组成的数组,这时候取长度就准确了。
对比你用的split(".").length - 1方法,match的方式更直观,直接针对目标字符进行匹配统计,逻辑上更清晰~
内容的提问来源于stack exchange,提问作者blackdream
相关产品推荐
相关产品推荐

