RexExp 如何在替换字符串时以 `n` 时间停止

问题描述 投票:0回答:2

这是我的字符串:

const str = "abc def ghi jkl";

我正在寻找这样的结果:

abcdefghi jkl
前2个空格被删除。但目前我的模式无法扩展到
2
次。它只占用第一个空间并替换。

我的彭定康:

const letters = str.replace(/([^a-zA-Z])/,  '',);

如何只更换

space
所需的次数?

我目前的成绩:

abcdef ghi jkl

为了学习额外的知识,如何仅替换最后一个或仅替换最后一个的 2 个实例?

javascript regex
2个回答
1
投票

不要让 RegEx 夺走你的谦虚,一个简单的 for 循环就足够了:

const str = "abc def ghi jkl";
let letters = str;
for (let i = 0; i < 2; i++) {
  letters = letters.replace(/([^a-zA-Z])/,  '',);
}

console.log(letters)

关于你的问题,如果你需要做最后一个,那么通过在前面添加一个贪婪的匹配组来从后面匹配正则表达式

.*
,然后用那个贪婪的匹配组替换字符串:

const str = "abc def ghi jkl";
let letters = str;
for (let i = 0; i < 2; i++) {
  letters = letters.replace(/(.*)[^a-zA-Z]/, '$1',);
}

console.log(letters)


0
投票

一种方法是在空格上拆分整个字符串,然后将结果数组切成可以用空格或什么都不连接的部分:

const str = "abc def ghi jkl";

const arr = str.split(' ')

const result = arr.slice(0, 2).join('') + arr.slice(2).join(' ')

console.log(result)

const result2 = arr.slice(0, -2).join(' ') + arr.slice(-2).join('')

console.log(result2)

© www.soinside.com 2019 - 2024. All rights reserved.