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

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

Обычно я использую следующий код в JavaScript, чтобы разбить строку на пробелы.

"The quick brown fox jumps over the lazy dog.".split(/\s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]

Это, конечно, работает, даже если между словами есть несколько пробельных символов.

"The  quick brown fox     jumps over the lazy   dog.".split(/\s+/);
// ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]

Проблема заключается в том, что у меня есть строка с ведущим или конечным пробелом, и в этом случае результирующий массив строк будет содержать пустой символ в начале и/или конце массива.

"  The quick brown fox jumps over the lazy dog. ".split(/\s+/);
// ["", "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog.", ""]

Это тривиальная задача для устранения таких пустых символов, но я бы лучше позаботился об этом в рамках регулярного выражения, если это вообще возможно. Кто-нибудь знает, какое регулярное выражение я мог бы использовать для достижения этой цели?

4b9b3361

Ответ 1

Если вас больше интересуют биты, которые не являются пробелами, вы можете сопоставить не-whitespace вместо разделения по пробелам.

"  The quick brown fox jumps over the lazy dog. ".match(/\S+/g);

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

"   ".match(/\S+/g)

Итак, лучший образец для изучения:

str.match(/\S+/g) || []

Ответ 2

" The quick brown fox jumps over the lazy dog. ".trim().split(/\s+/);

Ответ 3

Вместо разделения по пробельным последовательностям вы можете сопоставить любые последовательности без пробелов:

"  The quick brown fox jumps over the lazy dog. ".match(/\S+/g)