matches = words
.filter((re => word => re.test(word))(new RegExp(green, "i")))
.filter((re => word => re.test(word))(new RegExp(`[${yellow.replace(/[.]/g, "") || "a-z"}]`, "i")))
.filter((re => word => !re.test(word))(new RegExp(`[${gray}]`, "i")))
.filter((re => word => !re.test(word))(new RegExp([...yellow.padEnd(5, ".")].map((c, i) => c === "." ? "_" : (a => (a[i] = c, a))(".....".split("")).join("")).join("|"), "i")))