我正在使用正则表达式在字符串中查找 URL,然后将它们转换为真正的 HTML 链接(在 JavaScript 中)。我的正则表达式的问题在于它包含 http 之前的前一个字符。(我说的是第一个数组中的第二个正则表达式。)
str = "testhttp://example.com";
search = new Array(
/\[url\](.*?)\[\/url\]/ig,
/(?:[^\]\/">]|^)((https?):\/\/[-A-ZÅÄÖ0-9+&@#\/%?=~_|!:,.;]*[-A-ZÅÄÖ0-9+&@#\/%=~_|])/ig
);
replace = new Array(
'<a href="//$1">$1</a>',
'<a href="$1">$1</a>'
);
for (i = 0; i < search.length; i++) {
str = str.replace(search[i], replace[i]);
}
输出变为:
tes<a href="http://example.com">http://example.com</a>
但我希望它是:
test<a href="http://example.com">http://example.com</a>
重要的是正则表达式应该找到 URL,即使它们在字符串中是第一个,但如果前一个字符是以下三个字符之一,则不应该找到它们:"/>
我对正则表达式很陌生。希望你能理解!
谢谢!