如何删除除Javascript中带有正则表达式的单词之间的所有空格

时间:2018-03-20 13:44:37

标签: javascript regex removing-whitespace

  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。我觉得我可以在这里使用小组,但不知道是谁

4 个答案:

答案 0 :(得分:4)

您可以使用RegEx ^\s|\s$|(?<=\B)\s|\s(?=\B)

  • ^\s处理开头空格的情况

  • \s$处理末尾空格的情况

  • (?<=\B)\s处理非单词字符后的空格大小

  • \s(?=\B)处理非字词之前的空格大小

Demo.

编辑: 正如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)

方法1

See regex in use here

\B\s+|\s+\B
  • \B匹配\b不匹配的位置
  • \s+匹配一个或多个空白字符

&#13;
&#13;
const r = /\B\s+|\s+\B/g
const s = ` hello world! , this is Cecy `

console.log(s.replace(r, ''))
&#13;
&#13;
&#13;

方法2

See regex in use here

(?!\b\s+\b)\s+
  • (?!\b +\b)否定前瞻确保后续内容不匹配
    • \b断言位置为单词边界
    • \s+匹配任何空白字符一次或多次
    • \b断言位置为单词边界
  • \s+匹配任何空白字符一次或多次

&#13;
&#13;
const r = /(?!\b\s+\b)\s+/g
const s = ` hello world! , this is Cecy `

console.log(s.replace(r, ''))
&#13;
&#13;
&#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,'')