Есть ли регулярное выражение JavaScript для удаления всех пробелов, кроме новой строки?

Как удалить пробелы в строке, но не новый символ строки в JavaScript. Я нашел решение для С#, используя \t , но он не поддерживается в JavaScript.

Чтобы сделать это более понятным, вот пример:

var s = "this\n is a\n te st"

с использованием метода regexp Я ожидаю, что он вернет

"this\nisa\ntest"

Ответ 1

Это будет работать даже на \t.

var newstr = s.replace(/ +?/g, '');

Ответ 2

Хотя в Javascript / /g соответствует \t, я нахожу, что он может скрыть исходное намерение, поскольку оно читается как совпадение для символа пробела. Альтернативой было бы использовать коллекцию символов, явно указывающую пробельные символы, исключая \n. т.е. /[ \t\r]+/g.

var newString = s.replace(/[ \t\r]+/g,"");

Ответ 3

Попробуйте это

var trimmedString = orgString.replace(/^\s+|\s+$/g, '') ;

Ответ 4

Если вы хотите сопоставить любой символ пробела, который соответствует \s, кроме строк новой строки, вы можете использовать это:

/[\t\v\f\r \u00a0\u2000-\u200b\u2028-\u2029\u3000]+/g

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

Ответ 5

попробуйте '/^\\s*/'

Ответ 6

Это трюк:

str.replace(/ /g, "")

и пробел НЕ соответствует вкладкам или разрыву строк (CHROME45), при замене во всем мире не требуется плюс или вопросительный знак.

В Perl у вас есть "горизонтальное прокручивание" стенограммы \h для выделения между строк и пробелов, но, к сожалению, не в JavaScript.

Сжатие\t, с другой стороны, поддерживается IS в JavaScript, но оно описывает только табулятор.

Ответ 7

[^\S\r\n]+

Не без пробелов char, а не \r, а не \n; один или несколько экземпляров.