Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript:提取字符串的部分(正则表达式)_Javascript_Regex_String_Match - Fatal编程技术网

javascript:提取字符串的部分(正则表达式)

javascript:提取字符串的部分(正则表达式),javascript,regex,string,match,Javascript,Regex,String,Match,问题很简单,假设以下字符串: var str = '<a href="aaaa">aaaaa</a><a href="bb">b\'s</a>' 我当然想要 ["aaaa", "bb"] 如果没有/g,它会很接近,但它只匹配“aaaa”。有什么建议可以解决这个问题吗 谢谢 因为Javascript没有lookback,这可能是您想要的。自然会有更优雅的解决方案: input.match(/<[^href|/]*(href[\s]*=[\s

问题很简单,假设以下字符串:

var str = '<a href="aaaa">aaaaa</a><a href="bb">b\'s</a>'
我当然想要

["aaaa", "bb"]
如果没有/g,它会很接近,但它只匹配“aaaa”。有什么建议可以解决这个问题吗


谢谢

因为Javascript没有lookback,这可能是您想要的。自然会有更优雅的解决方案:

input.match(/<[^href|/]*(href[\s]*=[\s]*")([^"]+)(?=">)/g).map(
function(x){return x.split('href')[1].replace(/[^"]+"(.*)/,'$1');
})

input.match(/因为Javascript没有lookbehind,这可能是您想要的。自然会有更优雅的解决方案:

input.match(/<[^href|/]*(href[\s]*=[\s]*")([^"]+)(?=">)/g).map(
function(x){return x.split('href')[1].replace(/[^"]+"(.*)/,'$1');
})

使用JS解析DOM非常简单

var str = '<a href="aaaa">aaaaa</a><a href="bb">b\'s</a>',
    help = document.createElement('div');

helper.innerHTML = str;

Array.prototype.forEach.call(help.querySelectorAll("a[href]"), function (elem) {
    console.log(elem.getAttribute('href'));
});
var str='',
help=document.createElement('div');
helper.innerHTML=str;
Array.prototype.forEach.call(help.queryselectoral(“a[href]”),函数(elem){
log(elem.getAttribute('href');
});

使用JS解析DOM非常简单

var str = '<a href="aaaa">aaaaa</a><a href="bb">b\'s</a>',
    help = document.createElement('div');

helper.innerHTML = str;

Array.prototype.forEach.call(help.querySelectorAll("a[href]"), function (elem) {
    console.log(elem.getAttribute('href'));
});
var str='',
help=document.createElement('div');
helper.innerHTML=str;
Array.prototype.forEach.call(help.queryselectoral(“a[href]”),函数(elem){
log(elem.getAttribute('href');
});

我不会使用正则表达式来解决这个问题。解决方案很容易失败。这要看情况而定,对吗?如果你有可预测的输入等,应该可以。此外,他确实将他的问题标记为正则表达式,我没有资格争辩。不过,请不要进行血腥的投票:)
如果你有可预测的输入等,这应该很好。
足够公平,但是你的正则表达式太严格了,我认为它几乎没有什么用处。
而且他确实将他的问题标记为正则表达式
这并不意味着答案必须是正则表达式。好吧,足够公平,伙计。1问题情况可能是'href'="“在HTML标签中根本不会出现。其他的,我可以修改答案。我指的是你只考虑了一个链接的代码> > W+< /代码>,我不知道这是否是OP真正想要的,因为它是非常受限的。至于改进答案,你可以创建一个包含HTML的独立节点,并使用DOM来选择AN。chor标记,然后在href中链接。我不会为此使用正则表达式。解决方案很容易失败。这取决于情况,对吗?如果您有可预测的输入等,应该可以。此外,他确实将他的问题标记为正则表达式,我没有资格争论。不过,请不要进行血腥的投票:)
如果您有可预测的输入等,这应该很好。
足够公平,但您的正则表达式太严格,我认为它几乎没有用处<代码>他确实把他的问题标记为regex
这并不意味着答案必须是regex。好吧,够公平的,伙计。1问题情况可能是'href'=“'完全不出现在html标记中。还有其他的吗?我可以修改答案。我指的是你只考虑了一个链接的代码> > W+< /代码>,我不知道这是否是OP真正想要的,因为它是非常受限的。至于改进答案,您可以创建一个包含HTML的分离节点,并使用DOM来挑选锚定标记,然后在href中链接。