为了账号安全,请及时绑定邮箱和手机立即绑定

使用正则表达式提取元标记

使用正则表达式提取元标记

holdtom 2022-05-22 11:21:28
我需要从我正在使用的字符串中提取元标记,\<meta[\s\S]*?\>但除此之外,如果元中有一些忽略(或 someIgnore)属性,我想忽略它。<meta property="position" content="1" someIgnore ignore="metaextract"/>.这是我的示例函数。function parseMetas(locals) {    var str = locals.body, regex = /\<meta[\s\S]*?\>/g;    if (regex.test(str)) {        locals.body = str.replace(regex, '');        locals.meta = str.match(regex).join('\n');    }}
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您可以negative lookahead在正则表达式中使用。


function parseMetas(locals) {

    var str = locals.body, 

    let regex = /<meta(?!.*?(ignore|someIgnore))[\s\S]*?\/?>/g;

    if (regex.test(str)) {

        locals.body = str.replace(regex, '');

        locals.meta = str.match(regex).join('\n');

    }

}

演示:


let regex = /<meta(?!.*(ignore|someIgnore))[\s\S]*?\/>/g;

let input = `

    <meta property="position" content="1" someIgnore ignore="metaextract"/>,

    <meta property="position" content="1" ignore="metaextract"/>,

    <meta property="position" content="1"/>,

    <meta property="position" content="1" someIgnore />,

    <meta name="description" content="type_your_description_here"/>,

    <meta charset="utf-8"/>'

`;



console.log(input.match(regex));


查看完整回答
反对 回复 2022-05-22
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信