假设我有一个用户名列表,我需要使用搜索键 搜索用户。对于每个用户名,如果它与 key 匹配,我会将其添加到搜索结果中,如以下 javascript 代码所示:
var username_1 = "amal";
var username_2 = "sayed ali mohamed";
var search_key = "am";
var index = username_1.search(search_key);
if(index != -1){
console.log('Username 1 matched')
}
index = username_2.search(search_key);
if(index != -1){
console.log('Username 2 matched')
}
很明显,只有 username1
与查询匹配,但请注意,这两个名称都有字母“a”和“m”。因此,如果我希望两个名称都匹配,我需要使用以下正则表达式:.*a.*m.*
问题:给定一串字符 'c1c2c3...c< sub>n',如何将其转化为下面的字符串'.*c1.*c2.*c3 ... .*cn.*' 以有效的方式使用 javascript?
最佳答案
首先:您想要的正则表达式的格式是/a.*b.*c/
,而不是/a*b*c*/
。后一个表达式只会匹配 aaaabbccccc
这样的字符串,而不会匹配 axxxbxxxc
。
其次:从"abc"
转换为/a.*b.*c/
最简单的方法是在一个空分隔符上拆分字符串,然后加入带有通配符的结果数组:
var input = "abc";
var regex = new RegExp(input.split("").join(".*"));
关于javascript - 如何在 javascript 中过滤具有某些字符序列的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49116301/