正则表达式从每一行开始删除空格

Regex delete spaces from every line start

我使用 Highlight js 插件自动缩进我的代码。 我的 IDE 也会自动缩进我的代码。

<div>
     <div>
         <pre>
              <code>
                   <h1>Hello world</h1>
              </code>
         </pre>
      </div>
 </div>

我想要这个:

<h1>Hello word</h1>

但是因为 Highlight js 没有做相对缩进,我最终得到了这个:

                   <h1>Hello world</h1>

所以我尝试了这样的方法

$('pre code').html($('pre code').html().replace(/^\s{24,}/g,''));

它在字符串的第一行工作正常,但我想在每一行都这样做 --> 从每行开头删除每 24 个第一个空格。

两件事:

  • \s 也匹配换行符,所以你需要一个 [^\S\r\n] 来匹配任何 horizo​​ntal space
  • 需要 /m 修饰符才能使 ^ 匹配行的开头,而不是整个字符串的开头。

因为我在上面的示例中只计算了 19 spaces,这里是一个有效的正则表达式:

/^[^\S\r\n]{19,}/gm

regex demo