我有一个正在循环访问的数组。对于数组中的每个值,我都会对其进行分析,然后根据其满足的条件将值分流到另一个数组中。不过,出于这个问题的目的,我只是想计算当前数组项中有多少个句点。
这是我尝试使用的代码的相关部分:
for(i = 0; i < (sortarray.length) -1; i++)
{
var count = (sortarray[i].match(/./g)||[]).length;
console.log(count + ' periods found in name' + sortarray[i]);
if (count > 1)
{
alert('Error: One or more filenames contain periods.');
return;
}
else ...
大多数值是文件名并且有一个句点,而文件夹名称没有句点。任何超过 1 个句点的内容都会弹出一个警报框。看起来很简单,但由于某种原因,我的变量不断返回 100 而不是 1,因此该框总是弹出。
是否有更好的方法来计算每个数组值中的点?
最佳答案
问题出在你的正则表达式上。点 (.) 表示任何字符。此外(因为您使用的是 g
选项)您的正则表达式将匹配整个字符串。
这就是为什么你得到 100:length
正在对你的完整字符串进行调用。
因此,您应该转义点,以便它真正查找点而不是任何字符。
sortarray[i].match(/\./g)
关于javascript - 匹配返回 100 而不是实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34598981/