gpt4 book ai didi

javascript - 正则表达式,选择链接从空格开始,但从选择中排除空格

转载 作者:行者123 更新时间:2023-11-29 23:54:06 25 4
gpt4 key购买 nike

我有这样的正则表达式

((?:^|\s)https?:\/\/[^\s]+|(?:^|\s)www\.[^\s]+)

https://regex101.com/r/TwD0S3/2

它必须匹配文本中从空格开始的所有链接,或者在它们之前什么都没有,一切都很好,但空格(如果存在)必须从匹配的链接中排除。有可能吗?html代码中的链接一定不能匹配,所以

<img src="http://link.dev/static/images/svg/logo.svg">

必须完全忽略。

正则表达式将在 JavaScript 中使用

最佳答案

您可以使用捕获组来获取您感兴趣的内容。要使您的正则表达式正常工作,只需将 http 中的部分包装起来即可。与 () .此外,它可以增强一点,使匹配更线性:

/(?:^|\s)((?:https?:\/\/|www\.)[^\s<>"']+)/gi

参见 regex demo ,您需要的字符串在第 1 组中。

var rx = /(?:^|\s)((?:https?:\/\/|www\.)[^\s<>"']+)/ig;
var str = 'http://link.dev/static/images/svg/logo1.svg\n<img src="http://link.dev/static/images/svg/logo2.svg">\nthis is simple text www.link.dev/static/images/svg/logo3.svg \nor https://link.dev/static/images/svg/logo4.svg';
var res=[],m;

while ((m = rx.exec(str)) !== null) {
res.push(m[1]);
}

console.log(res);

但是,为了避免匹配 < 之间的 URL和 > ,您可以将这些子字符串与 <[^<]*> 匹配(使用 | 替代运算符将其添加为替代分支),并在其他地方捕获 URL ( regex demo ):

/<[^<]*>|((?:https?:\/\/|www\.)\S+)/gi

var rx = /<[^<]*>|((?:https?:\/\/|www\.)\S+)/gi;
var str = 'http://link.dev/static/images/svg/logo1.svg\n<img src="http://link.dev/static/images/svg/logo2.svg">\nthis is simple text www.link.dev/static/images/svg/logo3.svg \nor https://link.dev/static/images/svg/logo4.svg';
var res=[],m;

while ((m = rx.exec(str)) !== null) {
if (m[1]) res.push(m[1]);
}

console.log(res);

关于javascript - 正则表达式,选择链接从空格开始,但从选择中排除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112645/

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