javascript - 如何使用正则表达式选择特定字符之前的最后两个空格以外的所有多个空格?

标签 javascript regex

这是一个示例字符串:

   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/

相关文章:

javascript - 如何检查String是否包含 "?"标记

javascript - Date(), Date.UTC() 范围运算符的奇怪行为

javascript - 调用异步函数时如何给数组赋值?

Java正则表达式将字符串转换为有效的json字符串

regex - Notepad++正则表达式查找3个连续数字

javascript - 单击特定链接的功能

javascript - 页面完全加载时确保 javascript 正在运行的最佳方法是什么?

javascript - 测试方法不适用于以括号/特殊字符开头的字符串的正则表达式

c++ - 在 VS2012 中伪造原始字符串?

regex - 在 R 正则表达式中逐个匹配单词