考虑到我有一个用户名列表,我需要搜索具有搜索键的用户。对于每个用户名,如果它与密钥匹配,我会将其添加到搜索结果中,如以下 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。*
问题:给出一串字符'c 1 c 2 c 3 ... c < sub> n ',如何将其转换为以下字符串'。* c 1 。* c 2 。* c 3 < / sub> ...。* c n 。*'以高效的方式使用javascript?
答案 0 :(得分:1)
首先:您想要的正则表达式的格式为/a.*b.*c/
,而不是/a*b*c*/
。后一个表达式只匹配aaaabbccccc
之类的字符串,并且不匹配axxxbxxxc
。
第二:从"abc"
转换为/a.*b.*c/
的最简单方法是将字符串拆分为空分隔符,然后将结果数组与通配符连接:
var input = "abc";
var regex = new RegExp(input.split("").join(".*"));