0

Remove unknown amount of unknown characters from string in JS?

I have a strong, something like "balblabla onclick='blabla()' blablabbla", and I have to remove that onclick from the string. The attribute to the function in the onclick will keep changing though, so it's never the same length. How do I go about this? Using regex? I've never used those, so any assistance would be great! Thanks!

11th Aug 2019, 9:13 AM
Paul Grasser
Paul Grasser - avatar
6 Réponses
+ 1
I modified the expression according to what you said. Could you please have another look at it? I also loosely accounted for arrays, objects and functions as possible arguments. Doesn't look pretty though.
11th Aug 2019, 10:53 AM
Shadow
Shadow - avatar
+ 1
Regex is a possibility, the following expression should do the trick: https://code.sololearn.com/Wcyw6N0ystp3/?ref=app If you know that the rest of the string contains no single quotation character or bracket, you could also search for them and then use them as an identifier to delete everything between the position of onclick and that position.
11th Aug 2019, 9:37 AM
Shadow
Shadow - avatar
+ 1
Shadow yes, that did it! Thank you! or should I say, Danke!
11th Aug 2019, 10:58 AM
Paul Grasser
Paul Grasser - avatar
0
Shadow that would do the trick but the attribute always changes. Like, once the attribute is 'hello' and once it's 'goodbye'. How does that work?
11th Aug 2019, 9:39 AM
Paul Grasser
Paul Grasser - avatar
0
If I understood you correctly, only the function name changes? That is covered by the regex expression. Otherwise I got your question wrong I guess. The expression currently looks for a string containing onclick, followed by any amount of whitespaces (\\s*) followed by =, followed by any amount of whitespaces again, followed by ', followed by any combination of characters and digits (the function name, replace \\w with [_\\w] to enable underscores too), followed by () and '. If the brackets are not mandatory, replace \\(\\) with (\\(\\))?.
11th Aug 2019, 9:41 AM
Shadow
Shadow - avatar
0
Nono, the function call will sometimes look like this func("some") and sometimes like this func("something"). The function name will always be the same, the argument won't.
11th Aug 2019, 10:38 AM
Paul Grasser
Paul Grasser - avatar