这可能很容易,但是由于树木,我只是看不到森林。给出以下功能:
const urlify = text => {
let urlRegex = /(https?:\/\/[^\s]+)(<\/td>)/g;
return text.replace(urlRegex, function(text) {
return '<a href="' + text + '">' + text + '</a>';
})
}
alert(urlify('<td>http://test.com</td>'))
或多或少像this SO answer中的函数。
regex replace()函数当前获取整个匹配项。因此,该链接包含结束</td>
。我将如何访问函数内的第一个捕获组urlRegex.exec(text)[1]
?
答案 0 :(得分:1)
捕获组作为第一个参数之后的附加参数传递给您的函数:
const urlify = text => {
let urlRegex = /(https?:\/\/[^\s]+)(<\/td>)/g;
return text.replace(urlRegex, function(_, text)
// Ignoring the first argument ----------^^
return '<a href="' + text + '">' + text + '</a>';
})
}
console.log(urlify('<td>http://test.com</td>'))
但是您不需要此功能,可以在替换字符串中使用令牌:
const urlify = text => {
let urlRegex = /(https?:\/\/[^\s]+)(<\/td>)/g;
return text.replace(urlRegex, '<a href="$1">$1</a>');
}
console.log(urlify('<td>http://test.com</td>'))
更多on MDN。