Javascript 匹配返回100而不是实际值

Javascript 匹配返回100而不是实际值,javascript,arrays,match,Javascript,Arrays,Match,我有一个循环通过的数组。对于数组中的每个值,我将对其进行分析,然后根据它满足的条件将值分流到另一个数组中。不过,出于这个问题的目的,我只是想计算当前数组项中有多少个周期 以下是我试图使用的代码的相关部分: for(i = 0; i < (sortarray.length) -1; i++) { var count = (sortarray[i].match(/./g)||[]).length; console.log(count + ' periods found in name

我有一个循环通过的数组。对于数组中的每个值,我将对其进行分析,然后根据它满足的条件将值分流到另一个数组中。不过,出于这个问题的目的,我只是想计算当前数组项中有多少个周期

以下是我试图使用的代码的相关部分:

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 ...
for(i=0;i<(sortarray.length)-1;i++)
{
var count=(sortarray[i]。匹配(//g)| |[])。长度;
log(在名称'+Sortaray[i]中找到的计数+句点);
如果(计数>1)
{
警报('错误:一个或多个文件名包含句点');
返回;
}
其他的
大多数值都是文件名,只有一个句点,而文件夹名没有句点。任何超过1个句点的值都会弹出一个警告框。看起来很简单,但由于某种原因,我的变量总是返回100而不是1,因此框总是会弹出


有更好的方法来计算每个数组值中的点吗?

代替该逻辑,您可以只比较
的第一个索引和
的最后一个索引,如果它们不相等,则表示文件名有多个

for(i = 0; i < (sortarray.length) -1; i++)
 {
  if (sortarray[i].indexOf(".")!=sortarray[i].lastIndexOf("."))
  {
   alert('Error: One or more filenames contain periods.');
   return;
  }
}
for(i=0;i<(sortarray.length)-1;i++)
{
if(sortarray[i].indexOf(“.”)=sortarray[i].lastIndexOf(“.”)
{
警报('错误:一个或多个文件名包含句点');
返回;
}
}

您可以只比较
的第一个索引和
的最后一个索引,而不是该逻辑,如果它们不相等,则表示文件名有多个

for(i = 0; i < (sortarray.length) -1; i++)
 {
  if (sortarray[i].indexOf(".")!=sortarray[i].lastIndexOf("."))
  {
   alert('Error: One or more filenames contain periods.');
   return;
  }
}
for(i=0;i<(sortarray.length)-1;i++)
{
if(sortarray[i].indexOf(“.”)=sortarray[i].lastIndexOf(“.”)
{
警报('错误:一个或多个文件名包含句点');
返回;
}
}

问题在于您的正则表达式。点(.)表示任何字符。此外(由于您使用的是
g
选项),您的正则表达式将匹配整个字符串

这就是您获得100的原因:
length
在您的整个字符串上被调用

因此,您应该转义点,以便它真正查找点而不是任何字符

sortarray[i].match(/\./g)

问题在于您的正则表达式。点(.)表示任何字符。此外(因为您使用的是
g
选项),您的正则表达式将匹配整个字符串

这就是您获得100的原因:
length
在您的整个字符串上被调用

因此,您应该转义点,以便它真正查找点而不是任何字符

sortarray[i].match(/\./g)

你需要计算实点
\。
.Simple
是一个保留运算符。它意味着:任何字符…你需要计算实点
\。
.Simple
是一个保留运算符。它意味着:任何字符…如果我只需要一个是/否检查,这将起作用,但我实际上也需要句点计数。如果我只需要一个是/否检查,但实际上我还需要周期计数。