例如,我有字符串:
<template>
<view class="container">{{title}}</view>
</template>
或
<custom>
anything...
</cusomt>
我只想删除template
/ custom
代码,并将代码保留在template
/ custom
内。
Remove HTML Tags in Javascript with Regex中的方法将删除所有代码。
node
来处理字符串。答案 0 :(得分:0)
由于这是Javascript,为什么不使用像document.getElementsByTagName('template')
这样的东西,然后提取孩子?
var templateElements = document.getElementsByTagName('template');
var processedElements = [];
for (var i = 0; i < templateElements.length; i++) {
var templateParent = templateElements[i];
var children = templateParent.children;
processedElements.push(children);
}
答案 1 :(得分:0)
您可以使用DOM Parser
API,因为正则表达式不应解析XML或HTML,
let s = `<template>
<view class="container">{{title}}</view>
</template>`;
let s1 = `<custom>
anything...
</custom>`;
let d = new DOMParser();
let doc = d.parseFromString(s, 'application/xml');
let doc1 = d.parseFromString(s1, 'application/xml');
let r = doc.children[0].innerHTML;
console.log(r);
let r1 = doc1.children[0].innerHTML;
console.log(r1)
修改强>
当您在节点环境中时,我仍然建议您使用DOM解析库。
您也可以使用/\<.*\>([\s\S]*)\<\/.*\>/
。此正则表达式不检查有效性,但假定提供的标记有效。
<强>演示强>
let s = `<template>
<view class="container">{{title}}</view>
</template>`;
let s1 = `<custom>
anything...
</custom>`;
let re = /\<.*\>([\s\S]*)\<\/.*\>/
console.log(re.exec(s)[1].trim());
console.log(re.exec(s1)[1].trim());
<强> EDIT2 强>
您也可以使用下面的cheerio
: -
const cheerio = require('cheerio');
let s = `<template>
<view class="container">{{title}}</view>
</template>`;
let $ = cheerio.load('<div id="myid">' + s + '</div>');
console.log($('#myid>:nth-child(1)').html().trim());