Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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_Regex - Fatal编程技术网

JavaScript正则表达式不匹配

JavaScript正则表达式不匹配,javascript,regex,Javascript,Regex,我写了一个函数从这样的段落中获取中间名 用于: firstName=“Jan” lastName=“Levinson” para=“Jan-Jan-Levinson-Levinson-Levinson-Levinson-Levinson” 预期的输出应该是[“Jan”,“Levinson”] 我的代码编写如下: 函数名(firstName,lastName,para){ var regex=new RegExp(firstName+“\040”([A-Z][A-Z]*)\040?”+las

我写了一个函数从这样的段落中获取中间名

用于:

  • firstName=“Jan”
  • lastName=“Levinson”
  • para=“Jan-Jan-Levinson-Levinson-Levinson-Levinson-Levinson”
预期的输出应该是
[“Jan”,“Levinson”]

我的代码编写如下:

函数名(firstName,lastName,para){
var regex=new RegExp(firstName+“\040”([A-Z][A-Z]*)\040?”+lastName,“g”);
变量匹配=参数匹配(正则表达式);
var out=[];
if(匹配数组的instanceof){
matches.forEach(元素=>{
element=element.substring(0,element.length-lastName.length);
element=element.substring(firstName.length,element.length);
element=element.trim();
推出(元件);
});
}
返回;
}
console.log(middleName(“Jan”、“Levinson”、“Jan-Jan-Levinson-Levinson-Levinson-Levinson”)
我自己尝试过,与此相关的测试与挑战的描述不明显匹配。无论如何,下面的代码以绿色运行(至少是未锁定的测试)


那么你想只取一系列重复单词中的第一个重复单词?或者你想从6个单词中选一个?你是什么意思?不清楚你为什么(对我)使用这个正则表达式,但在
foreach
循环中,你正在覆盖
元素
参数,因此只推送一个值。试着解释一下你算法的目标是什么,并在代码中添加一些注释,不清楚你想要什么,因为有很多方法可以获得你指定的输出。请使用另一种解释你的算法:)我想得到中间名,它是一个大写+小写的单词。名字-中间名-姓氏之间可能有空格。我尝试过其他一些情况,函数是正确的,但不是在这种情况下。我认为在1月1日1月1日1月1日1月1日1月1日1月1日1月1日1月1日1月1日1月1日1日1月1日1月1日1日1月1日1日1月1日1日1月1日1日1月。更多详情[此处]()
function middleName(firstName, lastName, para) {
    var pattern = firstName + "\\s?([A-Z][a-z]*)\\s?(" + lastName + ")?\\s?" + lastName;
    var regex = new RegExp(pattern, "g");
    var match;
    var matches = [];
    while ((match = regex.exec(para)) !== null) {
        matches.push(match[1]);
        if (match[2] !== undefined) {
            matches.push(match[2]);
        }
    }
    return matches;
}