javascript - 如何在 javascript 中过滤具有某些字符序列的字符串?

标签 javascript

假设我有一个用户名列表,我需要使用搜索键 搜索用户。对于每个用户名,如果它与 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/

相关文章:

javascript - 在asp.net Listview中添加自动计算求和行和列

java - 如何使用 Java 上传 zip 文件?

javascript - 计算针的旋转

javascript - 根据第一个随机数生成第二个数字

javascript - 为什么没有在 Chrome 中验证美国运通卡?

javascript - mongoosejs 返回带有更改对象的 model.find

javascript - JSON:JS解析外部JSON文件(我可以去掉引号吗?)

javascript - 使卡片可拖动,卡片粘在上面的卡片上

javascript - 如何使用 jQuery 遍历订单列表中的每个项目?

javascript - 如何访问 jQuery JSON 中的 HTML 元素属性