Javascript RegExp或循环有问题吗

Javascript RegExp或循环有问题吗,javascript,regex,Javascript,Regex,我得数一数一封信被压了多少次。我写了这个程序(我只能使用JS),大部分都是这样,但我似乎遇到了一个问题 如果键盘输入为“w s d”,则会显示“字母w按下一次”和“字母s按下两次”。字母D根本不显示。老实说,我看不出有什么问题 for(index = 0; index< inputList.length; index++) { if(str != null && patt.test(str) && inputList[index].t

我得数一数一封信被压了多少次。我写了这个程序(我只能使用JS),大部分都是这样,但我似乎遇到了一个问题

如果键盘输入为“w s d”,则会显示“字母w按下一次”和“字母s按下两次”。字母D根本不显示。老实说,我看不出有什么问题

for(index = 0; index< inputList.length; index++) {        
    if(str != null && patt.test(str) && inputList[index].trim().length > 0) {
        var match1 = str.match(new RegExp(inputList[index], "g"));                        
        if(match1 != null){

        output.innerHTML = output.innerHTML + ('<span>Letter ' + inputList[index] + " was pressed " + match1.length + " times</span><br/>");
        str = str.replace(new RegExp(inputList[index], "g"), '');
        }
    }
}
for(index=0;index0){
var match1=str.match(新的RegExp(inputList[index],“g”);
如果(匹配1!=null){
output.innerHTML=output.innerHTML+('Letter'+inputList[index]+“被按下”+match1.length+“次
); str=str.replace(新的RegExp(输入列表[索引],“g”),“”); } } }

这是提琴:

在打印次数后,将以下内容放入:

index = index + match1.length - 1;
这是因为您总是将
索引
增加1,即使按键次数更多,这意味着当您有
w s d
时,您在索引中循环
0 1 2
,而不是
0 1 3
(2被跳过,因为
s
出现两次)


这不是一个真正的答案。更多的是一个问题。我所做的只是在调试时添加了这个,这应该没有任何效果。但确实如此,塔达,一切都正常

patt.test(str);

您应该在此处包含相关代码,并链接到小提琴。什么是inputList?你说你认为你的正则表达式是错误的,但是没有显示正则表达式。它实际上是有道理的。没错。谢谢:)它在fiddle中工作得很好,但在实际代码中没有任何作用:/a像“a a d”这样的字符串只显示3 a和1 d。没有。。但是小提琴还可以。。