var str=" hello world! , this is Cecy ";
var r1=/^\s|\s$/g;
console.log(str.match(r1));
console.log(str.replace(r1,''))
这里,我期望的输出是“hello world!,这是Cecy”,这意味着删除字符串开头和结尾的空格,以及非单词字符前后的空格。 我现在的输出是“hello world!,这是Cecy”,我不知道在“,”之前和之后删除空格的是谁,同时在“o”和“w”之间保留空格(以及在其他单词字符之间) )。
P.S。我觉得我可以在这里使用小组,但不知道是谁
答案 0 :(得分:4)
您可以使用RegEx ^\s|\s$|(?<=\B)\s|\s(?=\B)
^\s
处理开头空格的情况
\s$
处理末尾空格的情况
(?<=\B)\s
处理非单词字符后的空格大小
\s(?=\B)
处理非字词之前的空格大小
编辑: 正如ctwheels指出的那样,\b
是一个零长度断言,因此您不需要任何后视或前瞻。
这是一个更简单,更简单的版本: ^\s|\s$|\B\s|\s\B
var str = " hello world! , this is Cecy ";
console.log(str.replace(/^\s|\s$|\B\s|\s\B/g, ''));
答案 1 :(得分:3)
\B\s+|\s+\B
\B
匹配\b
不匹配的位置\s+
匹配一个或多个空白字符
const r = /\B\s+|\s+\B/g
const s = ` hello world! , this is Cecy `
console.log(s.replace(r, ''))
&#13;
(?!\b\s+\b)\s+
(?!\b +\b)
否定前瞻确保后续内容不匹配
\b
断言位置为单词边界\s+
匹配任何空白字符一次或多次\b
断言位置为单词边界\s+
匹配任何空白字符一次或多次
const r = /(?!\b\s+\b)\s+/g
const s = ` hello world! , this is Cecy `
console.log(s.replace(r, ''))
&#13;
答案 2 :(得分:0)
你正在寻找的方法是trim() https://www.w3schools.com/Jsref/jsref_trim_string.asp
var str = " Hello World! ";
console.log(str.trim())
答案 3 :(得分:-1)
yuo可以使用以下命令
str.replace(/ /g,'')