Вы можете создать желаемую строку, заменив совпадения следующего регулярного выражения пустыми строками.
^[ \t]*|[ \t](?=[ \t,?])|[ \t]*$
Запустите двигатель!
Javascript ' Обычный движок s выполняет следующие операции.
^ : match beginning of string
[ \t]* : match 0+ spaces or tabs
| : or
[ \t] : match a space or tab
(?=[ \t,?]) : next character must be a space, tab, comma or question mark
| : or
[ \t]* : match 0+ spaces or tabs
$ : match end of string
(?=[ \t,?])
- это положительный прогноз .
Я предположил, что, как и в примере, все пробелы и табуляции перед вопросительными знаками (а также запятыми) необходимо удалить. Если необходимо удалить также пробелы и табуляции, предшествующие другим символам, эти символы следует добавить в класс символов [ \t,?]
. Мы могли бы написать, например, [ \t,?.!:;]
.
Специальный символ \s
, который соответствует всем пробельным символам, должен использоваться не вместо [ \t]
. Это потому, что \s
также соответствует символам новой строки. Если, например, строка была abc \n x
, использование \s
привело бы к строке abcx
, тогда как использование [ \t]
преобразовало бы строку в abc\nx
.