var str=" hello world! , this is Cecy ";
var r1=/^\s|\s$/g;
console.log(str.match(r1));
console.log(str.replace(r1,''))
Here, the output I expect is "hello world!,this is Cecy", which means remove whitespaces in the beginning and the end of the string, and the whitespace before and after the non-word characters. The output I have right now is"hello world! , this is Cecy", I don't know who to remove the whitespace before and after "," while keep whitespace between "o" and "w" (and between other word characters).
p.s. I feel I can use group here, but don't know who
\B\s+|\s+\B
\B
Matches a location where \b
doesn't match\s+
Matches one or more whitespace charactersconst r = /\B\s+|\s+\B/g
const s = ` hello world! , this is Cecy `
console.log(s.replace(r, ''))
(?!\b\s+\b)\s+
(?!\b +\b)
Negative lookahead ensuring what follows doesn't match
\b
Assert position as a word boundary\s+
Match any whitespace character one or more times\b
Assert position as a word boundary\s+
Match any whitespace character one or more timesconst r = /(?!\b\s+\b)\s+/g
const s = ` hello world! , this is Cecy `
console.log(s.replace(r, ''))