I have a string and I want to remove this data like this \(f(x) = (a b)\)
so i am thinking to get all subsstring and then make some operation on array. But it is giving me only one stripedHtml. So not able to get how to clean it. Just wants to remove this equations.
Result will be : Here’s the evidence
const filter_data = `<p>\(f(x) = (a b)\)</p><p>\(f(x) = (a db)\)</p><p>\(f(x) = (a d c b)\)</p>
<p>Here’s the evidence.</p>`
var strippedHtml = filter_data.substring(
filter_data.lastIndexOf("\(") 1,
filter_data.lastIndexOf("\)")
);
console.log(strippedHtml)
CodePudding user response:
JS has a replace method for this that accepts RegExp:
const filter_data = `<p>\(f(x) = (a b)\)</p><p>\(f(x) = (a db)\)</p><p>\(f(x) = (a d c b)\)</p>
<p>Here’s the evidence.</p>`;
var strippedHtml = filter_data.replace(/\<.*?\(.*?>/g, "");
console.log(strippedHtml);
The RegExp searches for an < followed by a ( and then an > and replaces all appearances with an empty value.
In your string it will match two times and do a replace.
Maybe you have to modify the RegExp to fit your real string as it would also match text nodes containing ( but that's what I would do at this point with the given data.
CodePudding user response:
You can use following regular expressions to obtain solution
const filterData = `<p>\(f(x) = (a b)\)</p><p>\(f(x) = (a db)\)</p><p>\(f(x) = (a d c b)\)</p><p>Here’s the evidence.</p>`
const regEx1 = /<[^>]*>/g //regular expression to remove all html tags
const regEx2 = /\([^]*\)/g //regular expression to remove everything between \( and \)
const result = filterData.replace(regEx1,'').replace(regEx2,'')
console.log("Result : ",result);
Output -> Result : Here’s the evidence.
