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;
}