这是一个测试字符串:

    something { some words };


我需要在javascript中的'{'和'}'字符之间匹配所有空格(以稍后删除,即用“ str.replace()函数替换为空字符)。
在此示例中,我应该匹配3个空格(一个在“ some”之前,一个在“ some和” words之间”,一个在“ words”之后)。
我研究了几个类似的问题以及前瞻性小组和后向型小组,但我不知道该怎么做。

你能帮助我吗?

到目前为止,我只能匹配第一个空格字符:https://regex101.com/r/2KW646/2

编辑:我使用的浏览器不支持超前和超前。

删除匹配的空格后,输出应为:

    something {somewords};

最佳答案

function myFunction() {
  var str = document.getElementById("demo").innerHTML;
  var left = str.replace(/(.*?{)(.*?)(};)/, "$1");
  var mid =  str.replace(/(.*?{)(.*?)(};)/, "$2");
  var right = str.replace(/(.*?{)(.*?)(};)/, "$3");
  var midnospace = mid.split(" ").join("");
  var result = left + midnospace + right;
  document.getElementById("demo").innerHTML = result;
}

<!DOCTYPE html>
<html>
<body>
<p id="demo">something { some words };</p>
<button onclick="myFunction()">Try it</button>

</body>
</html>





几个相关的有用帖子:


Replace captured groups
Replace all occurrences of a string


说明:

1)将字符串分成3个捕获组。使用字符串替换仅保存特定的捕获组编号。相同的正则表达式使用3次,并且.*?使正则表达式“非贪婪”,因此不会过度扩展。

a-在/之前{

b-{}内

c-}及之后。

2)将结果从1b)拆分到空格上,创建一个字符串列表,然后再次将其与一个空字符串连接在一起以摆脱空格

3)组合1a),2和1c以产生所需的答案。

09-25 16:18
查看更多