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

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

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

/^s*r?n/g   

/^s*r?n$/g

изменить 1

похоже, что решение (я изменил его немного), предложенной aaronman и м. buettner works:

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

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

Изменить 2

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

/^[st]*(rn|n|r)/gm

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

редактировать 3

Это самый краткий, охватывающий все пробелы (пробелы, вкладки) и платформы (Linux, Windows, Мак.)

/^s*[rn]/gm

большое спасибо м. Бюттнер!

3 ответов


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

/^\s*\n/gm

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

обратите внимание, что вы пропускаете окончания строки Mac (только \r). Это помогло бы в этом случае:

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

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

As Декс указано в комментарии, это не сможет очистить последнюю строку, если она состоит только из пробелов (и после нее нет новой строки). Способ исправить это-сделать фактическую новую строку необязательной, но включить перед ней якорь конца строки. В этом случае вы do должны соответствовать строке, заканчивающейся правильно, хотя:

/^\s*$(?:\r\n?|\n)/gm

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

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

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

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

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