我只需要在href中找到html字符串中的所有链接 双重qute(“”)或单个qute('')的情况
示例:
<a href='text'>
或
<div href="text">;
我想出
function findHrefValues(str) {
let hrefs = [];
let pattern = /href='([^']+)'/g;
let match = pattern.exec(str);
if(match && Array.isArray(match)) {
match.forEach((href)=> {
if(href) hrefs.push(href);
});
}
return hrefs;
}
但效果不佳,无法识别双重古特语。
答案 0 :(得分:3)
紧接'
之后捕获第一个"
或href
,然后使用字符集,该字符集包含通过反向引用包含相同引号的但的所有内容,然后再次使用后向引用 来匹配href
的结尾:
const str = `<a href='tex""t1'>
<div href="tex''t2">`;
function findHrefValues(str) {
const re = /href=(['"])([^\1]+?)\1/g;
const matches = [];
let match;
while ((match = re.exec(str)) !== null) {
matches.push(match[2]);
}
return matches;
}
console.log(findHrefValues(str));
但是,如果可能的话,请不要使用任何正则表达式-而是使用DOMParser
解析HTML字符串:
const str = `<a href='text1'>
<div href="text2">`;
const doc = new DOMParser().parseFromString(str, 'text/html');
const hrefs = Array.from(
doc.querySelectorAll('[href]'),
element => element.getAttribute('href')
);
console.log(hrefs);
答案 1 :(得分:0)
您可以使用
尝试使用此代码 let pattern=/href=('|")([^']+)('|")/g;