有这样一个简单的例子。
let content = '<h1 class=\"sr-only\">TEST1<\/h1><h1 class=\"cookie-banner__headline\">\nCookie-Settings\n<\/h1>';
let regex = /<h1[^>]*>(.*?)<\/h1>/g;
let res = [];
let match;
while ((match = regex.exec(content)) !== null) {
res.push(match[1]);
}
console.log(res);
任务是如何将所有找到的标题文本的数组写入变量?标签之间包含的所有内容都必须 <h1> </h1>
是 res 数组的元素。(* 变量content
可以包含任何属性)
问题出在你的正则表达式中,即换行符。要解决此问题,您需要使用 /gs 标志。
s 标志更改点 (.) 的行为。通常,正则表达式中的句点匹配除换行符之外的任何字符。但是,添加 s 标志将启用“单行”匹配模式,其中点现在将匹配任何字符,包括换行符。因此,使用 /gs 正则表达式可以成功找到标签,即使它们包含换行符 (\n)。