Подтвердить что ты не робот

JavaScript: как использовать регулярное выражение для удаления пустых строк из строки?

Мне нужно использовать JavaScript для удаления пустых строк в текстовом поле HTML. Пустые строки могут находиться в любом месте элемента textarea. Пустой линией может быть только возврат или пробел плюс возврат.

Я ожидаю решения регулярного выражения. Вот некоторые из них, которые я пробовал, но они не работают и не могут понять, почему:

/^\s*\r?\n/g   

/^\s*\r?\n$/g

Изменить 1

Похоже, что решение (я немного изменил его), предложенное ааронманом, и m.buettner работает:

string.replace(/^\s*\n/gm, "") 

Может кто-нибудь сказать, почему мое первое регулярное выражение не работает?

Изменить 2

Прочитав все полезные ответы, я придумал следующее:

/^[\s\t]*(\r\n|\n|\r)/gm

Это будет тот, который охватывает все ситуации?

Изменить 3

Это наиболее краткий, охватывающий все пробелы (пробелы, табуляции) и платформы (Linux, Windows, Mac).

/^\s*[\r\n]/gm

Большое спасибо m.buettner!

4b9b3361

Ответ 1

Ваш шаблон выглядит хорошо, вам просто нужно включить многострочный модификатор m, чтобы ^ и $ соответствовали начальным и конечным строкам строк:

/^\s*\n/gm

Без m, привязки соответствуют только строкам-истокам и окончаниям.

Обратите внимание, что вы пропустили концы строк Mac (только \r). В этом случае это поможет:

/^\s*[\r\n]/gm

Также обратите внимание, что (в обоих случаях) вам не нужно явно указывать необязательный \r перед \n, потому что об этом заботится \s*.

Ответ 2

Я считаю, что это сработает

searchText.replace(/(^[ \t]*\n)/gm, "")

Ответ 3

Это должно сделать трюк, который я думаю:

var el = document.getElementsByName("nameOfTextBox")[0];
el.value.replace(/(\r\n|\n|\r)/gm, "");

EDIT: Удаляет три типа разрывов строк.