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

Javascript 正则表达式部分不匹配字符串,javascript,regex,Javascript,Regex,我有一个这样的物体: "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 RegE

我有一个这样的物体:

"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 + ')', 'gi');
var counter = 0;
for (var key in info) {
    if (key.match(regex)) {
        counter++;
    }
}
console.log("count---------  " + counter)
return counter;
  }
countAccurrences(info,'interval')-->count=4的输出是错误的,但我希望count=2 计数外精度(info,'intervalSat)--->count=2,这是正确的
如果有人能指引我,那就太好了。谢谢

它正在工作,您正在检查字符串中是否存在“interval”,当然“intervalSat”包括单词interval。你需要一个不同的方法,或者一个只允许在键名后加数字的正则表达式。我还建议不要使用“object”作为变量名,我相信您有一个输入错误“inerval”,尽管我不确定逻辑是否符合您的预期。

我认为您在这种情况下误解了regex

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

如果您的“键”结构为“键”、“键1”、“键2”等,则您应在“键”部分加上数字进行匹配:

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

var信息={
“时间间隔”:“周一至周五8-11”,
“间隔1”:“周一至周五17-20”,
“间隔时间”:“Sat 8-11”,
“间隔2”:“Sat 17-20”
};
函数计数精度(信息、键名){
var regex=new RegExp(keyName+'[0-9]?$','gi');
var计数器=0;
用于(var输入信息){
if(key.match(regex)){
计数器++;
}
}
console.log(“计数----------”+计数器)
返回计数器;
}
计数精度(信息,“间隔”);

计数精度(信息,“间隔”)如果(key.match(regex)&&key!='inerval'){--inerval是o型吗?@sniperd,我编辑了itLiam MacDonald,我编辑了排版。我不在乎数字,也不感兴趣。我只想知道这个词“intervalSat”重复了多少次或“interval”重复了多少次