这是我的字符串:
const str = "abc def ghi jkl";
我正在寻找这样的结果:
abcdefghi jkl
前2个空格被删除。但目前我的模式无法扩展到 2
次。它只占用第一个空间并替换。
我的彭定康:
const letters = str.replace(/([^a-zA-Z])/, '',);
如何只更换
space
所需的次数?
我目前的成绩:
abcdef ghi jkl
为了学习额外的知识,如何仅替换最后一个或仅替换最后一个的 2 个实例?
不要让 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)
一种方法是在空格上拆分整个字符串,然后将结果数组切成可以用空格或什么都不连接的部分:
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)