I have been breaking my head on this for sometime now. In javascript I have a string expression where I need to remove the spaces between '[' and ']'.
For example the expression can be :-
"[first name] + [ last name ] + calculateAge()"
I want it to bee :-
"[firstname] + [lastname] + calculateAge()"
I tried something from the following stackoverflow question for square brackets but didn't quite get there. How do I make the regex in that question, work for square brackets too?
Can anyone help?
Thanks, AJ
I have been breaking my head on this for sometime now. In javascript I have a string expression where I need to remove the spaces between '[' and ']'.
For example the expression can be :-
"[first name] + [ last name ] + calculateAge()"
I want it to bee :-
"[firstname] + [lastname] + calculateAge()"
I tried something from the following stackoverflow question for square brackets but didn't quite get there. How do I make the regex in that question, work for square brackets too?
Can anyone help?
Thanks, AJ
Share Improve this question edited May 23, 2017 at 11:46 CommunityBot 11 silver badge asked May 20, 2013 at 6:56 AkshatAkshat 2886 silver badges19 bronze badges 3- I don't think you can do this in one step. You have to extract the contents of the brackets, remove spaces from that, and then substitute that back in. – Barmar Commented May 20, 2013 at 6:58
- 2 Can the brackets be nested? If so, you can't do it with a JavaScript regex. If not, no problem (if brackets are always correctly balanced). – Tim Pietzcker Commented May 20, 2013 at 7:24
- It wont be nested as of now. So looks simple. – Akshat Commented May 20, 2013 at 7:32
4 Answers
Reset to default 19If brackets are always balanced correctly and if they are never nested, then you can do it:
result = subject.replace(/\s+(?=[^[\]]*\])/g, "");
This replaces whitespace characters if and only if there is a ]
character ahead in the string with no intervening [
or ]
characters.
Explanation:
\s+ # Match whitespace characters
(?= # if it's possible to match the following here:
[^[\]]* # Any number of characters except [ or ]
\] # followed by a ].
) # End of lookahead assertion.
Try
"[first name] + [ last name ] + calculateAge()".replace(/\[.*?\]/g, function(string) {
return string.replace(/\s/g, '');
})
Demo: Fiddle
Slight adaptation so you can use in in [Visual Studio Code] or [SSMS] with [SQL] queries, remember to hit the regex option on the find/replace dialog
\s+(?=[^[\]]*\])
Note - screenshot shows the spaces being replaced with "_"
You can use this
"[first name] + [ last name ] + calculateAge()".gsub(/\s+/, "")
This works in ruby