我需要替换
"wjjghwkjghwkjgh https://www.google.com jhgkwjhgkwhgk https://youtube.com"
与
"wjjghwkjghwkjgh <a href='https://www.google.com'>https://www.google.com</a> jhgkwjhgkwhgk <a href='https://youtube.com'>https://youtube.com</a>";
我已经使用正则表达式链接和示例消息提供了https://jsbin.com/kosogijudo/1/edit?js,console草案
我不知道该怎么做,因为如果我创建一个循环,它会正确地修改第一个循环,但在第二次迭代中它会在标记内再次修改。
我认为有一种方法可以指定一个采用link
和输出<a href="link">link</a>
顺便说一句,所有这一切都是因为我需要使用https://github.com/jsdf/react-native-htmlview on native来显示文本视图中的链接。如果在React Native本身有一种现代化的方法,那么它也会很棒。
答案 0 :(得分:1)
你可以尝试一下
var string = "wjjghwkjghwkjgh https://www.google.com jhgkwjhgkwhgk https://youtube.com";
string.split(' ');
var answer = string.map(m => (m.includes('https') && [`<a href=${m}>${m}</a>`].join(m)) || m).join(' ');
答案 1 :(得分:0)
您可以通过传递replacer函数作为第二个参数来使用replace
方法。 More details on MDN about the parameters
为每个匹配调用replacer函数,它的返回值用于替换字符串中的原始匹配。这是一个示例,希望它有所帮助
var regexp = /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9]\.[^\s]{2,})/gi;
var test = 'wjjghwkjghwkjgh https://www.google.com jhgkwjhgkwhgk https://youtube.com'
var replaced = test.replace(regexp,function(match){
return `<a href="${match}">${match}</a>`;
})
console.log(replaced); //wjjghwkjghwkjgh <a href="https://www.google.com">https://www.google.com</a> jhgkwjhgkwhgk <a href="https://youtube.com">https://youtube.com</a>
&#13;
答案 2 :(得分:0)
您可以尝试以下方式:
var str = "wjjghwkjghwkjgh https://www.google.com jhgkwjhgkwhgk https://youtube.com";
str = str.split(' ');
str = str.map( function(s){
if(s.startsWith('https://')){
s = '<a href=' + '\"' +s + '\"' + '>' + s + '</a>'
}
return s;
}).join(' ');
console.log(str)
&#13;
答案 3 :(得分:0)
<a>
标记g
标志,因此它会处理字符串中的多个URL
const linkRegex = /(https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*))/g
let message = "wjjghwkjghwkjgh https://www.google.com jhgkwjhgkwhgk https://youtube.com";
message = message.replace(linkRegex, "<a href='$1'>$1</a>") // Wrap in <a>
console.log(message)