是否可以匹配具有一定误差范围的单词模式。 例如,单词“Tike”,“Make”,“Bake”,“Tame”符合单词模式“Take”,带有一个拼写错误的字符。
答案 0 :(得分:1)
Regexp对于这个问题不是一个非常可扩展的解决方案,但如果这真的是你想做的全部,那么使用带有多个备选方案的regexp(由|
分隔),每个都有一个字符由点替换(.
)通配符。
function makeMatcher(str) {
const regexp = [...str].map((chr, i) =>
`${str.slice(0, i)}.${str.slice(i+1)}`).join('|');
console.log("regexp is", regexp);
return new RegExp(regexp, "i");
}
function test(s) { console.log(s, matcher.test(s) ? "matches" : "does not match"); }
const matcher = makeMatcher("Mike");
["Mike", "Mila", "Mika", "John"].forEach(test);
您的问题是一般问题的一个子集,有时称为“模糊(或近似)字符串匹配”,您可以在存在一个或多个替换(您的情况),插入或移除的字符或转置字符时进行匹配。使用regexp肯定无法解决这个一般性问题。但你会发现很多图书馆都可以做到这一点。你可以从https://code.google.com/archive/p/google-diff-match-patch/开始。