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!
Ответы
Ответ 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: Удаляет три типа разрывов строк.