Javascript 过滤器未从正则表达式中过滤

Javascript 过滤器未从正则表达式中过滤,javascript,regex,Javascript,Regex,我有一些问题与过滤器功能,不想做什么,我需要它做 我需要对该数组中包含相同字母连续重复的字符串进行筛选 这就是我所拥有的: var regex = /(.)\1+/g; var filtered = permutations.filter(function(string){ return !string.match(regex); }); 其中置换等于 [“a,a,b”,“a,a,b”,“b,a,a”,“a,b,a”,“a,b,a”,“b,a”,“b,a,a”] 此项的输出仅显

我有一些问题与过滤器功能,不想做什么,我需要它做

我需要对该数组中包含相同字母连续重复的字符串进行筛选

这就是我所拥有的:

var regex = /(.)\1+/g;

var filtered = permutations.filter(function(string){
    return !string.match(regex);
  });
其中置换等于

[“a,a,b”,“a,a,b”,“b,a,a”,“a,b,a”,“a,b,a”,“b,a”,“b,a,a”]

此项的输出仅显示相同的内容:

[“a,a,b”,“a,a,b”,“b,a,a”,“a,b,a”,“a,b,a”,“b,a”,“b,a,a”]

输出应为:

[“a,b,a”,“a,b,a”]


知道我做错了什么吗?

似乎需要在逗号后匹配重复的字符,因此,将模式更改为

/(.),\1/

详细信息

  • ()
    -捕获与单个字符(而不是换行字符)匹配的组
  • -逗号
  • \1
    -反向引用捕获组1
var regex=/(),\1/;
变量排列=[“a,a,b”,“a,a,b”,“b,a,a”,“a,b,a”,“a,b,a”,“b,a,a”,“b,a,a”];
var filtered=permutations.filter(函数(字符串){
return!regex.test(字符串);
});

console.log(过滤)也许您想查找非连续的被复制字符?使用
/().*\1/
RegExp#test(String)
@WiktorStribiżew这不是/()\1+/g所做的吗?不,您的模式匹配字符串,比如
nnnnn
(或者在更长的字符串中找到这样的分区匹配)。@WiktorStribiżew哦,我明白了,我需要复制的字符是连续的,因此为什么要使用\1+,您需要
/(),\1/
我实际上意识到了为什么我的原创作品在早些时候不起作用!我忘了将它们转换回非逗号分隔的字符串,这是典型的方法。无论如何,谢谢你的帮助!然后,使用
var regex=/()\1/
return!regex.test(string.replace(/,/g',)
。用我的方法,你节省了一个正则表达式的替换。很高兴它对你有用。请考虑通过点击来接受答案。✓ 如果我的回答对你有帮助(请参见),请点击左边(请参见)并向上投票(请参见)。