javascript - 匹配返回 100 而不是实际值

标签 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' + 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/

相关文章:

javascript - JQVMap - Ajax 悬停调用,标签问题

javascript - 如何多次使用 Angular 分量?

arrays - 从索引数组创建二进制矩阵

javascript - 在 javascript 的正则表达式中传递变量以进行字符串匹配

正则表达式精确匹配

即使最高值相同,JavasCript 函数也无法启动

javascript - 自动化网络事件,包括表单提交、javascript 和 SSL

actionscript-3 - 在as3中写入16位字节数组

arrays - 如何附加到作为 Swift 字典中值的数组

python - 比较两个电子表格并提取值