排除JavaScript正则表达式匹配的部分内容

时间:2014-07-01 21:42:33

标签: javascript html regex

我需要一个正则表达式来匹配"Google search"中的<a title="Google search" href="http://google.com">Google</a>

Here是regexr.com的链接。

我需要它只匹配<a>标签。我不擅长正则表达式,但我确实知道JavaScript,后面的观察是不可能的。我需要它以某种方式后瞻,并检查title=".+"是否 <a>之后

以下是我放在一起的一些正则表达式:

此表达式有点有效,但它会在title=""中选择<img>。此外,当我只需要title=<a>时,它会在"Google search"中选择"Microsoft home"

/((title=".+")(?=\s*href))|(title=".+")/igm;

enter image description here

这些表达式会删除我想要的title=,但最后也会添加\s

/(?!title=)".+"\s+/igm; AND /(?!title)".+"\s+\b/igm;

enter image description here

总之,鉴于上述HTML,我希望它只匹配"Google search""Microsoft home"(我不希望它包含title=也不匹配title="..."<img/>


修改

我正在处理的这个正则表达式匹配第一个<a>标题:

/(?!<a\s+title\=)("[^"]+")(?=\s*href)/igm;

enter image description here

1 个答案:

答案 0 :(得分:0)

这个正则表达式:

/<a[^>]+title=(["'])(Google search|Microsoft home)\1/ig

仅在 a 标记中捕获Google搜索或Microsoft主页。匹配包括标签。别担心!我们在第二个捕获组中捕获了“Google搜索”。您可以使用\ 2或$ 2在javascript中访问它。