这是一个示例字符串:
Lorem ipsum
- dolor sit amet consectetur
- adipisicing elit. Adipisci, quam.
什么是最优雅的正则表达式来选择除了“-”之前的两个空格之外的所有额外空格来制作一个优雅的列表?
这是一个期望结果的例子:
Lorem ipsum
- dolor sit amet consectetur
- adipisicing elit. Adipisci, quam.
这是我最好的猜测:/{2,}(?! {2}-)/g。
可悲的是,它还选择了“-”之前的两个空格。
编辑: 我想我会选择 followwing:
let str = ` Lorem ipsum
- dolor sit amet consectetur
- adipisicing elit. Adipisci, quam. `;
str = str.replace(/ {2,}/g, "");
str = str.replace(/-/g, " -");
console.log(str);
最佳答案
您可以选择字符串开头和结尾的所有空格或制表符,并将它们替换为空字符串。然后用 2 个空格替换以连字符开头的字符串。
const regex = /^[\t ]+|[\t ]+$/mg;
const str = ` Lorem ipsum
- dolor sit amet consectetur
- adipisicing elit. Adipisci, quam. `;
const subst = ``;
const result = str.replace(regex, subst).replace(/^-/gm, " -");
console.log(result);
你也可以结合使用 map 和 trim:
let str = ` Lorem ipsum
- dolor sit amet consectetur
- adipisicing elit. Adipisci, quam. `;
str = str.split("\n").map(s => s.trim()).map(x => x.replace(/^-/, " -")).join("\n");
console.log(str);
关于javascript - 如何使用正则表达式选择特定字符之前的最后两个空格以外的所有多个空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56169553/