正则表达式只匹配基本标记的href属性?

时间:2015-03-22 06:35:22

标签: html regex

我设法使用以下方法匹配任何标记的href值:

(?<=href\=["'])(.*?)(?=["'])

鉴于以下内容:

<base target="_blank" href="http://test.test">
<link rel="stylesheet" type="text/css" href="test.css">
<a href="test">test link</a>

它将匹配每个属性的值。但是,是否只能匹配基本标记的URL?

(注意我们无法从'base href ='向前看,因为href可能不是第一个属性,如上例所示)

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

/<base [^>]*href=\"(.*?)\"/

一般的想法是,您只需匹配一个开头<base代码,然后找到href之后但在任何>个字符之前显示的第一个引用值。如果任何其他属性中包含>,这将会中断,但这不是一个实际问题,如果是,则应使用真正的HTML解析器来提取属性值。< / p>