正则表达式删除“[”和“]”之间的空格

IT技术 javascript regex expression
2021-02-24 14:59:31

一段时间以来,我一直在思考这个问题。在javascript中,我有一个字符串表达式,我需要删除'['和']'之间的空格。

例如,表达式可以是:-

"[first name] + [ last name ] + calculateAge()"

我希望它变成:-

"[firstname] + [lastname] + calculateAge()"

我从下面的stackoverflow 问题中尝试了一些关于方括号的内容,但并没有完全实现。我如何使那个问题中的正则表达式也适用于方括号?

任何人都可以帮忙吗?

谢谢,阿杰

3个回答

如果括号始终正确平衡并且它们从未嵌套,那么您可以这样做:

result = subject.replace(/\s+(?=[^[\]]*\])/g, "");

当且仅当]字符串中前面有一个没有中间字符[]字符的字符时,才会替换空白字符。

解释:

\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.

尝试

"[first name] + [ last name ] + calculateAge()".replace(/\[.*?\]/g, function(string) {
    return string.replace(/\s/g, '');
})

演示:小提琴

谢谢阿伦。你能解释一下上面的表达式吗?
2021-04-23 14:59:31

你可以用这个

"[first name] + [ last name ] + calculateAge()".gsub(/\s+/, "")

这适用于Ruby

你甚至测试过吗?问题是关于 JavaScript,而不是 Ruby,在 Ruby 中,你会得到[firstname]+[lastname]+calculateAge()结果。
2021-04-23 14:59:31