gpt4 book ai didi

javascript - 正则表达式匹配字符串中的所有关键字

转载 作者:行者123 更新时间:2023-11-29 10:34:49 26 4
gpt4 key购买 nike

作为正则表达式的新手,我需要社区的一些支持

假设我有这个字符串 str

  1. www.anysite.com hello demo try this link

  2. anysite.com indeed demo link

  3. http://www.anysite.com another one

  4. www.anysite.com

  5. http://anysite.com

在这里将 1-5 视为整个字符串 str

我想将所有“anysite.com”转换为可点击的 html 链接,为此我正在使用:

str =  str.replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g, '<a href="$1" target="_blank">$1</a>');

这会将所有以 http/https/ftp 开头的空格分隔词转换为链接

<a href="url" target="_blank">url</a>

因此,第 3 行和第 5 行已正确转换。现在将所有 www.anysite.com 转换为我再次使用的链接

str = str.replace(/(\b^(http|https|ftp)?(www\.)[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, '<a href="https://$1" target="_blank">$1</a>');

虽然只有在 str 的开头找到 www.anysite.com 才会将其转换为链接。因此它转换行号 1 但不转换行号 4

Note that I have used ^(http|https|ftp)?(www.) to find all www not starting with http/https/ftp, as for http they already have been converted

还有第 2 行的链接,它既不是以 http 也不是以 www 开头,而是以 .com 结尾,正则表达式将如何处理。

作为引用,您可以尝试将整个字符串发布到您的 Facebook 时间轴,它将所有五行转换为链接。检查快照

enter image description here

最佳答案

感谢帮助,最终帮助我的 RegEx 是:

//remove all http:// and https://
str = str.replace(/(http|https):\/\//ig, "");

//replace all string ending with .com or .in only into link
str = str.replace( /((www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.(com|in))/ig, '<a href="//$1" target="_blank">$1</a>');

我使用 .com 和 .in 来满足我的特定要求,否则这个 http://regexr.com/39i0i 上的解决方案会工作

Though sill there is issue like- it doesn't convert shortened url into links perfectly. e.g http://s.ly/qhdfTyuiOP will give link till s.ly

还有什么建议吗?

关于javascript - 正则表达式匹配字符串中的所有关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38641512/

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