我有一個字符串數組,我試圖過濾包含重複字符的字符串數組。然而,我不明白的兩件奇怪的事情正在發生。這裏是我的代碼:重複字母的正則表達式是否爲false?
var array = ["aba", "aab", "baa"];
var pattern = /(\D)\1+/gi;
var filteredArr = array.filter(function(element){
console.log(element);
console.log(pattern.test(element));
return pattern.test(element) != true;
});
console.log(filteredArr);
一些奇怪的事情發生。在過濾器函數中,我測試了正則表達式是真還是假,並且它是應該的。
pattern.test("aba") = false;
pattern.test("aab") = true;
pattern.test("baa") = true;
但是,如果我測試它們之外的功能,「baa」似乎返回false ......這是不是正確的?
console.log(pattern.test("aba")); //returns false
console.log(pattern.test("aab")); //returns true
console.log(pattern.test("baa")); //returns false
對下一個奇怪的事情。過濾器函數應該返回不通過(即返回false)過濾器測試的元素。我的預期產出將是:
filteredArr = ["aba"];
然而,該代碼是這樣的,我的輸出是:
filteredArr = ["aba", "aab", "baa"];
什麼是更奇怪的是,如果我改變過濾函數返回的元素DO傳遞(即返回true)的測試,預期的輸出將是:
filteredArr = ["aab", "baa"];
然而,我接收輸出是一個空數組:
filteredArr = [];
我很困惑。我的正則表達式是錯誤的,還是我可能嘗試了一些過濾器函數無法做到的事情?這裏是所有的代碼的小提琴:
請剛剛發佈了一個新問題之前做一些研究。 – Mritunjay
刪除'g'標誌。 –