我编写了以下函数,以便为每个srcset
元素解析img
属性内的可用图像大小,并将其作为数组返回。
开启调试模式后,一切正常,但是一旦禁用调试模式,应用程序将崩溃并引发以下错误:
Error: invalid regular expression invalid group specifier name
export function srcsetParser(htmlString) {
let result = [];
let images = htmlString.match(/<img\s+[^>]*srcset="([^"]*)"[^>]*>/g); // Finding img tags inside html string
images && images.forEach(image => {
let srcsets = image.match(/(?<=srcset=").+?(?=\")/g); //Select srcset value
var urls = srcsets[0].split(", ");
urls.forEach(url => {
let temp = url.split(" ");
result.push(temp[0]);
});
});
return result;
}
任何想法都知道正则表达式有什么问题,为什么只有在调试模式关闭的情况下才这样呢?
谢谢
答案 0 :(得分:1)
浏览器支持不是很好,但是JavaScript now allows lookbehinds。旧的答案留在下面。
JavaScript正则表达式不支持后向。您可以使用另一种方法:
images && images.forEach(image => {
let srcsets = image.match(/srcset="(.+?)(?=\")/); //Select srcset value
var urls = srcsets[1].split(", ");
urls.forEach(url => {
let temp = url.split(" ");
result.push(temp[0]);
});
});