Regexp не выбирает 1 символ

Регулярное выражение: /[^ ][\S \r\n]*[^ ]/ не выбирает символ если он был один в строке.

Регулярное выражение удовлетворяет потребностям. но по какой то причине не выбирает 1 символ или букву или цифру.

const reg = /[^ ][\S \r\n]*[^ ]/

console.log("Name".match(reg))

console.log("   Name    sss".match(reg))
console.log("   777 777 Name    sss".match(reg))
console.log("  7".match(reg))

// Это не показывается а должно :

console.log("  s".match(reg), "s") // s
console.log(" s     ".match(reg), "s")  // s

Пример:

q - не выберет а должен

q - не выберет а должен

q q выберет учасаток q q

Задача regexp получить масив содержащий отфильтрованную строку в индексе 0

Буду благодарен за помощь!


Ответы (1 шт):

Автор решения: GrAnd

Должно /\S+(?:\s*\S+)*/ подойти. Т.е. берется непробельная последовательность и к ней неограниченное число раз может дописываться пробельно-непробельная последовательность.

const reg = /\S+(?:\s*\S+)*/

console.log("Name".match(reg))

console.log("   Name    sss".match(reg))
console.log("   777 777 Name    sss".match(reg))
console.log("  7".match(reg))

// Это не показывается а должно :

console.log("  s".match(reg), "s") // s
console.log(" s     ".match(reg), "s")  // s

→ Ссылка