How to change this tt /* a */ pp /* b */ dd
to
tt dd
this not including a and b link
var test = "tt /* a */ pp /* b */ dd";
// expected:
var res = "tt dd";
Is it simple with regexp?
If you want to remove something between two things, including those things, regex could do the trick pretty easily:
const str = 'tt /* a */ pp /* b */ dd';
const start = '/\\* a \\*/';
const end = '/\\* b \\*/';
const pattern = new RegExp(`${start}.*${end}`, 'g');
const result = str.replace(pattern, '');
console.log(pattern);
console.log(result);
There are two gotchas however.
The first is from your choice of delimiter. Since it has a *
in it, which has special meaning in regex, you need to be sure to escape it. If you choose a delimiter without characters special to regex, you don't have to do that.
The other gotcha isn't a gotcha so much as it is a requirement issue. You wanted tt dd
, but you'll get tt dd
as you describe it (two spaces), since both spaces are outside of your delimiters.
There are a couple of ways to deal with that. One could be to just replace two or more spaces with one space:
const str = 'tt dd';
const result = str.replace(/\s+/g, ' ');
console.log(result);