我有new RegExp(`\\b${escapedQuery}`, "i")
正则表达式来搜索单词边界,其中escapedQuery
是lodash's escapeRegExp function之后的转义值.
const BRANDS = [
"Alexander McQueen",
"Alexandre De Paris",
"alexander.t",
"A.W.A.K.E. MODE",
"alexanderwang.t",
"MARC JACOBS (THE)"
];
function filter(query) {
return BRANDS.filter((brand) => {
const escapedQuery = escapeRegExp(query);
const re = new RegExp(`\\b${escapedQuery}`, "i");
return re.test(brand);
});
}
但是,如果我传递一个点或括号符号,我就得不到预期的值.
console.log(filter("al")); // OK [ "Alexander McQueen", "Alexandre De Paris", "alexander.t", "alexanderwang.t"]
console.log(filter("M")); // OK [ "Alexander McQueen", "A.W.A.K.E. MODE", "MARC JACOBS (THE)"]
console.log(filter(".")); // Expected [""] - Actual ["alexander.t", "A.W.A.K.E. MODE", "alexanderwang.t"]
console.log(filter("(")); // OK [""]
console.log(filter(")")); // Expected [""] - Actual ["MARC JACOBS (THE)"]
下面是Sandbox条,以更好地理解预期和实际结果
需要在表达式中修复什么才能返回期望值?