【问题标题】:Regex to remove spaces between '[' and ']'正则表达式删除 '[' 和 ']' 之间的空格
【发布时间】:2013-05-20 06:56:38
【问题描述】:

我已经为此烦恼了一段时间。 在 javascript 中,我有一个字符串表达式,我需要删除 '[' 和 ']' 之间的空格。

例如表达式可以是:-

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

我希望它变成:-

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

我尝试了以下stackoverflow question 中的方括号,但并没有完全做到。如何使该问题中的正则表达式也适用于方括号?

谁能帮忙?

谢谢, 阿杰

【问题讨论】:

  • 我不认为你可以一步完成。您必须提取括号的内容,从中删除空格,然后将其替换回。
  • 括号可以嵌套吗?如果是这样,你不能用 JavaScript 正则表达式来做到这一点。如果不是,没问题(如果括号始终正确平衡)。
  • 目前不会嵌套。所以看起来很简单。

标签: javascript regex expression


【解决方案1】:

如果括号总是正确平衡并且它们从不嵌套,那么你可以做到:

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.

【讨论】:

    【解决方案2】:

    试试

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

    演示:Fiddle

    【讨论】:

    • 谢谢阿伦。你能解释一下上面的表达式吗?
    【解决方案3】:

    你可以用这个

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

    这适用于红宝石

    【讨论】:

    • 你测试过吗?问题是关于 JavaScript,而不是 Ruby,在 Ruby 中,您会得到 [firstname]+[lastname]+calculateAge()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2023-04-08
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多