Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式来匹配特定字符串中的任何字符_Javascript_Arrays_Regex_String - Fatal编程技术网

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”
作为第二个参数。