Javascript JS用“删除非字母字符”;新建RegExp();从字符串

Javascript JS用“删除非字母字符”;新建RegExp();从字符串,javascript,regex,ecmascript-6,Javascript,Regex,Ecmascript 6,我有一个搜索输入,允许我根据用户输入的内容过滤列表的结果。 虽然我想从搜索输入和列表中删除所有非字母字符,但是我想,这样他们就可以找到匹配的字符了 这就是我目前拥有的: let searchInput = '' // whatever the user types let result = list.filter(element => element.name.match(new RegExp(searchInput, 'i'))) .sort((a, b) => true

我有一个搜索输入,允许我根据用户输入的内容过滤列表的结果。 虽然我想从搜索输入和列表中删除所有非字母字符,但是我想,这样他们就可以找到匹配的字符了

这就是我目前拥有的:

let searchInput = '' // whatever the user types

let result = list.filter(element => element.name.match(new RegExp(searchInput, 'i')))
    .sort((a, b) => true * a.name.localeCompare(b.name))

您可以用正则表达式替换非单词字符
/[\W\u]+/

目前还不清楚您是尝试替换现有数据还是创建新的筛选列表。我想晚些时候再说

首先使用
map()
列出已删除的非单词字符,然后从搜索输入中删除非单词字符。然后只需过滤。如果您愿意,可以将它们链接起来:

let searchInput='he*(llo'//无论用户键入什么
让列表=[
{name:'#你好'},
{name:'he$llo'},
{name:'someevalue'},
{name:'什么'},
{name:'hello%'}
]
设re=new RegExp(/[\W\u]+/i)
让我们来看看清单=list.map(i=>(i.name=i.name.replace(re',),i))
让输入=搜索输入。替换(re“”)
让result=cleaned_list.filter(element=>element.name.match(新RegExp(cleaned_输入)))
console.log(结果)