You can use the DOM Parser
API as regex aren't supposed to parse XML or 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)
Edit
As you are in a node environment but I would still recommend you to use a DOM parsing library.
You could also use /\<.*\>([\s\S]*)\<\/.*\>/
. This regex doesn't check for validity but assumes the provided markup is valid.
Demo
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
You can also use cheerio
like below :-
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());