删除两个单词之间的空格/空格


Remove space/spaces between two words

我想把这个出来

Input              =|= Output  
=============================================
[b] [/b]           =|= [b][/b]
[b]      [/b]      =|= [b][/b]
[b]Hii[/b]         =|= [b]Hii[/b]  
[b]Hello There[/b] =|= [b]Hello There[/b]

我认为解决这个问题的唯一方法是我不知道写的正则表达式,所以寻求帮助

input = input.replace(/'[b']'s+'['/b']/ig, '[b][/b]');

演示→

对于 JavaScript:

input = input.replace(/'[b'](?: |'s)+?'['/b']/gi, '[b][/b]');

对于 PHP:

$input = preg_replace('/'[b'](?: |'s)+?'['/b']/i', '[b][/b]', $input);

上面包括 ,因为前面的例子表明了这一点。如果没有必要,只需使用:

对于 JavaScript:

input = input.replace(/'[b']'s+?'['/b']/gi, '[b][/b]');

对于 PHP:

$input = preg_replace('/'[b']'s+?'['/b']/i', '[b][/b]', $input);

但这些只会捕获不尾随的空白空格。

要抓住尾随...

对于 JavaScript:

input = input.replace(/'[b'](.+?)'['/b']/gi, function (n0, n1) {
    return '[b]' + n1.replace(/^'s+|'s+$/g, '') + '[/b]';
});

对于 PHP:

$input = preg_replace_callback('/'[b'](.+?)'['/b']/i', 
    create_function(
        '$m',
        'return "[b]".trim($m[1])."[/b]";'
    ), 
    $input);

input.replace(/'s+/g,'')会去掉所有空格(听起来像是你想做的),即使你的最后一个例子让我感到困惑

嗯。我想当我读到你的问题时,我明白你的意思,但你的例子让我很困惑。你已经写了PHP和Javascript...如果你想这样做是PHP,请使用preg_replace()$str ="要解析的值";

$new_value = preg_replace('/''s''s+/', '', $str);

希望这有帮助! :)

这应该可以做到:

preg_replace ("/'s+/", "'s", $subject);
preg_replace ("/']'s+'[/", "']'[", $subject);

它可以通过单个正则表达式完成,但在 2 次传递中更容易理解。

似乎您正在尝试仅删除字符串前后的空格。

在php中,有一个本机函数可以做到这一点

trim()在这里阅读

Here is an example:
$string = ' Hello World!      ';
$trimmed = trim($string);
echo $trimmed;
// will print 'Hello World'