这是一个测试字符串:
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以产生所需的答案。