Regex удаляет пробелы в начале каждой строки

Я использую плагин 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 первых пробела с начала каждой строки.

1 ответ

Решение

Две вещи:

  • \s соответствует символу новой строки, так что вам нужно [^\S\r\n] соответствовать любому горизонтальному пространству
  • /m модификатор требуется сделать ^ соответствует началу строки, а не всей строки.

Так как в приведенном выше примере я насчитал только 19 пробелов, вот рабочее выражение:

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

Посмотреть демо-версию регулярного выражения

Другие вопросы по тегам