gpt4 book ai didi

Javascript 正则表达式 urlify 文本

转载 作者:行者123 更新时间:2023-11-30 05:47:28 24 4
gpt4 key购买 nike

在包含大量以下 url 标记的字符串中 -

[http://www.someurl.com/path/to/resource/?some=params&crazy_chars=true_0_1_0_1]

我想捕获并转换成什么

<a href="http://www.someurl.com/path/to/resource/?some=params&crazy_chars=true_0_1_0_1" target="_blank" class="exturl">http://www.someurl.com/path/to/resource/?some=params&crazy_chars=true_0_1_0_1</a>

所以方括号内的所有 url 都将被搜索并替换为元素的内联 url。目前我发现 URL 模式的正则表达式为 -

RegExp("\[(http|ftp|https)://[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:/~+#-]*[\w@?^=%&amp;/~+#-])?\]", "gi");

但我仍然不清楚如何在单程中完成。我是否必须循环直到找不到匹配器?

最佳答案

Current I found Regex for URL pattern

但它本来是一个正则表达式文字,而不是 RegExp 构造函数的字符串参数。您所有的反斜杠都会对以下字符进行字符串转义,并且在正则表达式中无效。相反,使用

/\[(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:\/~+#-]*[\w@?^=%&amp;\/~+#-])?\]/gi

But I am still not clear on how I can do it in single pass. Do I have to loop for till no matcher is found?

不,一个简单的replace call就足够了。你可以放一个 capturing group在 url 周围(方括号之间),然后在替换字符串中使用捕获:

var regex = /\[((?:ftp|http)s?:\/\/[\w-]+(?:\.[\w-]+)+(?:[\w.,@?^=%&amp;:\/~+#-]*[\w@?^=%&amp;\/~+#-])?)\]/gi;
// here: ^ ^
// (the non-capturing groups are optional)
urlified = text.replace(regex, '<a href="$1" class="exturl">$1</a>');
// here: ^^ ^^

对于更高级的替换规则,您可以使用 replace 的回调函数参数。

当然,您可以(应该)采用其他答案建议的正则表达式改进/简化。

关于Javascript 正则表达式 urlify 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17178273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com