最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Regex to remove spaces between '[' and ']' - Stack Overflow

programmeradmin8浏览0评论

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
Add a ment  | 

4 Answers 4

Reset to default 19

If 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

发布评论

评论列表(0)

  1. 暂无评论