首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正则表达式与字符串部分不匹配

正则表达式与字符串部分不匹配
EN

Stack Overflow用户
提问于 2017-08-24 22:55:14
回答 2查看 61关注 0票数 1

我有一个这样的对象:

代码语言:javascript
运行
复制
"info" : {
 "interval": "Mon-Fri 8-11",
"interval1": "Mon-Fri 17-20",
"intervalSat": " Sat 8-11",
"intervalSat2": "Sat 17-20"
}

我想找出间隔或intervalSat发生了多少次,而不管它们的索引是什么。我的示例代码在这里,但它不能正常工作。

代码语言:javascript
运行
复制
function countAccurrencies(info, keyName) {
 var regex = new RegExp('(' + keyName + ')', 'gi');
var counter = 0;
for (var key in info) {
    if (key.match(regex)) {
        counter++;
    }
}
console.log("count---------  " + counter)
return counter;
  }

countAccurrencies(info,‘countAccurrencies’)-> count =4的输出是错误的,但我希望count =2 out of interval(info,‘intervalSat)-> count =2,这是正确的,如果有人指导我就太好了。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-24 23:23:50

在这种情况下,我认为您误解了正则表达式。

(interval)将匹配任何包含"interval“的字符串,无论它是"interval10”还是"10interval“。

如果您的"key“结构为"key”、"key1“、"key2”等,那么您应该匹配“key”部分加上数字:

keyName + '[0-9]?$'是您想要的正则表达式。0-9?$表示字符串中的最后一个字符是数字0-9,然后是字符串的结尾,如果没有数字,则只是字符串的结尾。

代码语言:javascript
运行
复制
var info = {
  "interval": "Mon-Fri 8-11",
  "interval1": "Mon-Fri 17-20",
  "intervalSat": " Sat 8-11",
  "intervalSat2": "Sat 17-20"
};


function countAccurrencies(info, keyName) {
  var regex = new RegExp(keyName + '[0-9]?$', 'gi');
  var counter = 0;
  for (var key in info) {
    if (key.match(regex)) {
      counter++;
    }
  }
  console.log("count---------  " + counter)
  return counter;
}

countAccurrencies(info, "interval");
countAccurrencies(info, "intervalSat");

票数 1
EN

Stack Overflow用户

发布于 2017-08-24 23:03:39

它正在工作,您正在检查字符串中是否存在' interval‘,当然'intervalSat’包含单词interval。您需要一种不同的方法,或者只允许keyName后面的数字的正则表达式。我还建议不要使用"object“作为变量名,我相信你有一个拼写错误的”惯性“,尽管我不确定逻辑是否如你所期望的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45864806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档