链接和链接类的javascript正则表达式
我需要用正则表达式收集javascript中文本以外的所有链接,将href的实际内容和链接的文本分开。因此,如果链接是链接和链接类的javascript正则表达式,javascript,regex,Javascript,Regex,我需要用正则表达式收集javascript中文本以外的所有链接,将href的实际内容和链接的文本分开。因此,如果链接是 <a href="someplace/topics/us/john.htm" class="r_lapi">John Dow</a> 我想收集href和“John Dow”的内容 这些链接中包含class=“r\u lapi”,可以识别我正在寻找的链接。 我现在得到的是: var link_regex = new RegExp("/<
<a href="someplace/topics/us/john.htm" class="r_lapi">John Dow</a>
我想收集href和“John Dow”的内容
这些链接中包含class=“r\u lapi”,可以识别我正在寻找的链接。
我现在得到的是:
var link_regex = new RegExp("/<a[^]*</a>/");
var match = content.match(link_regex, 'i');
console.log("match =", match );
var link\u regex=new RegExp(“/如果您可以使用DOM(您说过您想要regex,但是…)
,使用通过ajax返回的JSON:
<a href="someplace/topics/us/john.htm" class="r_lapi">John Dow</a>
<a href="foo">Don't pick me</a>
<a href="blahblahblah" class="r_lapi">Jane Bloggs</a>
{
"htmlList": [
"blah blah <a href=\"someplace/topics/us/john.htm\" class=\"r_lapi\">John Dow</a> blah blah",
"<a href=\"foo\">Don't pick me</a>",
"Two in this one <a href=\"blahblahblah\" class=\"r_lapi\">Jane Bloggs</a> and <a href=\"blahblahblah\" class=\"r_lapi\">Trevor Bloggs</a>"
]
}
{
“htmlList”:[
“废话废话废话”,
"",
“这一个有两个”
]
}
如果您确实需要使用正则表达式:
请注意,无法使用JavaScript中的正则表达式可靠地执行此操作;您需要一个解析器
你可以通过几个假设来接近
var link_regex = /<a(?:>|\s[^>]*>)(.*?)<\/a>/i;
var match = content.match(link_regex);
if (match) {
// Use match[1], which contains it
}
var link\u regex=/
这看起来是这样的:
文本)。在属性值中有一个
>`是完全有效的,因此该假设无效。如果您在浏览器中,您确实应该使用本机DOM
如果不是,假设href不包含像
或“
这样的奇怪字符,则可以使用以下正则表达式:
var matches = link.match(/^<a\s+[^>]*href="([^"]+)"[^>]*>([^<]*)<\/a>$/);
matches[1] == "someplace/topics/us/john.htm";
matches[2] == "John Dow";
var matches=link.match(/^
要获得完整的解决方案,请使用HTML解析器。为什么要使用正则表达式?为什么不使用DOM?您是否在浏览器之外执行此操作?非常感谢您的帮助!我让正则表达式正常工作。我希望通过ajax返回链接,否则我肯定会使用querySelectorAll解决方案。此外,我的链接将与特定的sourc相关e、 这是一种可预测的格式,所以我不希望在其中包含特殊字符。我现在就准备好了!@lw0:很高兴这有帮助!顺便说一句,您仍然不必对通过ajax返回的数据使用正则表达式。我已经添加了几个示例来说明如何执行此操作。非常感谢您的响应。出于某种原因,您使用的表达式不适用于我。我满足于下面的正则表达式,它让我非常接近我需要的:content.match(/
{
"htmlList": [
"blah blah <a href=\"someplace/topics/us/john.htm\" class=\"r_lapi\">John Dow</a> blah blah",
"<a href=\"foo\">Don't pick me</a>",
"Two in this one <a href=\"blahblahblah\" class=\"r_lapi\">Jane Bloggs</a> and <a href=\"blahblahblah\" class=\"r_lapi\">Trevor Bloggs</a>"
]
}
var link_regex = /<a(?:>|\s[^>]*>)(.*?)<\/a>/i;
var match = content.match(link_regex);
if (match) {
// Use match[1], which contains it
}
var matches = link.match(/^<a\s+[^>]*href="([^"]+)"[^>]*>([^<]*)<\/a>$/);
matches[1] == "someplace/topics/us/john.htm";
matches[2] == "John Dow";