0

我有这个示例文本,我想在其上运行正则表达式来拉取地址部分中 href 不包含 http|https 的锚标记。

我正在尝试使用这个正则表达式,但它还没有完成。当锚不是以 http 或 https 开头时,我无法拔出锚。

链接到 gskinner 网站 - http://regexr.com?34ev0

<a.*?href=[""|'](http|https:\/\/)(?<link>[^""|']*)[""|'].*?>

这是示例字符串:-

<br /><span style="font-size: 16px;"><strong><a target="_blank" href="http://www.yahoo.com">Good Link (Yahoo)</a><br /><br /><a target="_blank" href="www.bbc.com">Bad Link (BBC)</a><br /><br /><a href="" id="anchorSocialMedia" onclick="ShowModalPopup('anchorSocialMedia','/Events/Popup/SocialMediaShareModal.aspx','650px','500px');">Share This Event</a><br />Badge Perf Testing<br /><br /></strong></span>

谢谢。

4

1 回答 1

3

使用 JavaScript 正则表达式方法(几乎所有语言都有等价物):

<your string>.match(/<a\s[^>]*href\s*=\s*"[^"]*"[^>]*>/g)
.join('')
.match(/href\s*=\s*"(?!https?:\/\/)[^"]*"/g);

或者

<your string>.match(/<a\s[^>]*href\s*=\s*"(?!https?:\/\/)[^"]*"[^>]*>/g)
.map(function(x){return x.replace(/.*(href\s*=\s*"[^"]*").*/,'$1');})

你选!

于 2013-04-09T10:57:47.307 回答