const regex = /Vue[\s]*\.[\s]*component\((["'`].*["'`]([\s]*|.*)),(([\s]*|.*)+?(\}\))[^\{])/m;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('Vue[\\s]*\\.[\\s]*component\\((["\'`].*["\'`]([\\s]*|.*)),(([\\s]*|.*)+?(\\}\\))[^\\{])', 'm')
const str = `import { ViewIndex } from "../../../../Utils.js";
Vue.component('tab-control' , {
template: ViewIndex.getViewSync("tab-control"),
data() {
return { tabs: this.\$children ? this.\$children : [] };
},
created() {
this.tabs = this.\$children;
},
methods: {
selectTab(selectedTab) {
this.tabs.forEach(tab => {
tab.isActive = (tab.name == selectedTab.name);
});
}
}
}
);
Vue.component('tab-page', {
template: \`
<div v-show="isActive">
<slot></slot>
</div>
\`,
props: {
name: { required: true },
selected: { default: false },
},
data() {
return {
isActive: false
};
},
mounted() {
this.isActive = this.selected;
}
})
`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
if ((m = regex.exec(str)) !== null) {
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions