我有这个示例文本,我想运行正则表达式来拉取地址部分中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>
THX。
答案 0 :(得分:2)
使用JavaScript正则表达式方法(在几乎所有语言中都有等价物):
<your string>.match(/<a\s[^>]*href\s*=\s*"[^"]*"[^>]*>/g)
.join('')
.match(/href\s*=\s*"(?!https?:\/\/)[^"]*"/g);
OR
<your string>.match(/<a\s[^>]*href\s*=\s*"(?!https?:\/\/)[^"]*"[^>]*>/g)
.map(function(x){return x.replace(/.*(href\s*=\s*"[^"]*").*/,'$1');})
你选择!