我正在尝试将textarea元素中的所有链接替换为该段文本的函数结果。
示例:
url = /(^|<|\s)(www\..+?\..+?)(\s|>|$)/g; Text = "Text with link inside www.stackoverflow.com"; text.replace(url, convert(RESULT)); document.write(text); function convert(link){ return " XX " + link + "XX"; }
我需要的是在该字符串中找到的每个链接都被转换为被XX或任何其他字符串包围。 事实是我需要将文本中的EACH链接发送到该函数,因此我可以替换它们中的每一个。
我一直在网上搜索几个小时。尝试了很多东西。什么都行不通。
关于如何做到这一点的任何想法?
提前致谢!
答案 0 :(得分:2)
有一些问题。
replace
函数允许引用函数作为其第二个参数。您正在调用 convert
函数,而不是传递引用。replace
函数不会修改原始字符串。您需要保存其结果。convert
。全部放在一起:
function convert(link) {
return " XX " + link + "XX";
}
var url = /(^|<|\s)(www\..+?\..+?)(\s|>|$)/g;
var text = "Text with link inside www.stackoverflow.com";
text = text.replace(url, convert);
输出:
"Text with link inside XX www.stackoverflow.comXX"
答案 1 :(得分:1)
String#replace
不会修改接收器,因为JavaScript中的字符串是不可变的。你想要这个:
url = /(^|<|\s)(www\..+?\..+?)(\s|>|$)/g;
text = "Text with link inside www.stackoverflow.com";
text = text.replace(url, convert(RESULT));
document.write(text);
function convert(link){
return " XX " + link + "XX";
}
此外,您引用了我已更正的Text
而非text
。