Javascript 正则表达式来匹配特定字符串中的任何字符
基本上我是想看看名字的字符是否按顺序出现在字符串的字符中 也就是说,Javascript 正则表达式来匹配特定字符串中的任何字符,javascript,arrays,regex,string,Javascript,Arrays,Regex,String,基本上我是想看看名字的字符是否按顺序出现在字符串的字符中 也就是说,“跨越河流”,“克里斯”=>true,因为: “上船的船员”、“克里斯”=>错误,因为: 我有这个: function nameInStr(str, name){ let stringArray = Array.from(str); let testName = ""; for (let i = 0; i < stringArray.length; i++) { if (stri
“跨越河流”,“克里斯”
=>true
,因为:
“上船的船员”、“克里斯”
=>错误
,因为:
我有这个:
function nameInStr(str, name){
let stringArray = Array.from(str);
let testName = "";
for (let i = 0; i < stringArray.length; i++) {
if (stringArray[i].match(/any character from name/)) {
testName += stringArray[i];
}
}
if (testName === name) {
return true;
}
else {
return false;
}
}
console.log(nameInStr('Across the rivers', 'chris'));
将名称转换为单个正则表达式:
let nameregex = new RegExp(".*" + name.split("").join(".*") + ".*");
然后,您只需测试:
return nameregex.test(str);
为了避免名称中正则表达式元字符的潜在问题,它必须变得更为花哨。简单解决方案:
将搜索项更改为每个字符之间带有*
的正则表达式
例如,“chris”
->“c.*h.*r.*i.*s”
试试看
let re=new RegExp([…“chris”].join`.*`);
控制台日志(重新测试(“穿越河流”);
控制台日志(重新测试(“上船的船员”)
基本上,您希望将搜索的文本“abc”转换为正则表达式a.*b.*c
(虽然这不是最有效的解决方案)嗯,我得到了一个TypeError:str.test不是一个函数,
。请参见上面的编辑。@Pac0对于.isMatch()的结果相同
-类型错误:str.isMatch不是一个函数
@HappyHands31对了抱歉,我倒过来了,等等。。。固定的now@HappyHands31胡虎,语言错误,对不起,我删除了我的评论above@HappyHands31请注意说明中的最后一点:测试应该不区分大小写。因此,newregexp()
调用需要“i”
作为第二个参数。