首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >正则表达式以精确匹配一个单词,但接受一个字母的错误

正则表达式以精确匹配一个单词,但接受一个字母的错误
EN

Stack Overflow用户
提问于 2018-06-08 19:32:13
回答 1查看 280关注 0票数 0

我想知道是否有一种方法可以在javascript中使用regex匹配单词,但它可以接受一个拼写错误(一个字母更改,一个丢失的字母,或者多一个字母)。

示例。这里我有一个精确的匹配:

代码语言:javascript
复制
function isWordInSentence(s, w) {
    s = s.toLowerCase();
    w = w.toLowerCase();
    return new RegExp('\\b'+w+'\\b').test(s);
}

var word = 'bird';

console.log(isWordInSentence('I like my bird', word)); //True
console.log(isWordInSentence('I use thunderbird', word)); //False

这种情况已经不可能了,但我希望有一种东西可以接受这些东西:

代码语言:javascript
复制
console.log(isWordInSentence('I like my birds', word)); //True
console.log(isWordInSentence('I like my birdd', word)); //True
console.log(isWordInSentence('I like my beard', word)); //False
console.log(isWordInSentence('I use thunderbird', word)); //False

我知道对于basic语言,它可能会带来很多像这样的误报:

代码语言:javascript
复制
console.log(isWordInSentence('Do you bid?', word)); //True

但我希望在名字上使用这个系统,因为它们很容易拼错。

EN

回答 1

Stack Overflow用户

发布于 2018-06-10 07:06:15

您真正想要的是模糊字符串搜索/匹配。

有一个自己的计算机科学分支来处理这个problem,并且有很多算法。我建议使用已建立的JavaScript模糊搜索库之一,如Fuse.jsfuzzysearchfuzzyset.js

这是一个Fuse.js example

代码语言:javascript
复制
var books = [{
  'ISBN': 'A',
  'title': "Old Man's War",
  'author': 'John Scalzi'
}, {
  'ISBN': 'B',
  'title': 'The Lock Artist',
  'author': 'Steve Hamilton'
}]

var options = {
  keys: ['title', 'author'],
  id: 'title'
}
var fuse = new Fuse(books, options)

console.log(fuse.search('ol\' man'));
console.log(fuse.search('Locke'));
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50759722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档