是否从隔开的单词中删除空白



假设以下字符串:

hello world, h e l l o! hi. I am happy to see you!

有没有一种方法可以删除空格中的空白,比如这样?:

hello world, hello! hi. I am happy to see you!

我尝试了[^ ]+(s),但捕获组匹配所有空格。非常感谢。

一种正则表达式方法可能是:

var input = "hello world, h e l l o! hi. I am happy to see you!";
var output = input.replace(/(?<=bw)s+(?=wb)/g, "");
console.log(output);

以下是regex模式的解释,该模式针对位于两侧两个独立单词字符之间的空白:

(?<=bw)  assert that what precedes is a single character
s+        match one or more whitespace characters
(?=wb)   assert that what follows is a single character

由于您已经标记了pcre,另一个选项可能是:

(?:bwb|G(?!^))Kh(?=wb)

解释

  • (?:交替|的非捕获组
    • bwb在单词边界之间匹配单个单词字符
    • |
    • G(?!^)在上一场比赛结束时确定位置,而不是在比赛开始时
  • )关闭非捕获组
  • Kh忘记目前匹配的内容,只匹配一个水平空白字符
  • (?=wb)正向前瞻,断言一个单词char,后面跟一个单词边界到右边

Regex演示

在替换中使用空字符串。


另一个选项可以在一个单词字符序列中匹配至少2个字符,并在替换中删除空格。

请注意,s也可以匹配换行符。

const regex = /bw(?: w)+b/g
const str = "hello world, h e l l o! hi. I am happy to see you!";
let res = str.replace(regex, m => m.replace(/ /g, ''));
console.log(res);

相关内容

  • 没有找到相关文章

最新更新