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

时间:2011-05-21 03:03:07

标签: php javascript regex

我希望这个出来

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

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

6 个答案:

答案 0 :(得分:1)

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

Demo →

答案 1 :(得分:1)

对于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);

答案 2 :(得分:0)

input.replace(/\s+/g,'')将取出所有空格(听起来就像你想要做的那样),即使你的最后一个例子让我感到困惑

答案 3 :(得分:0)

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

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

希望这有帮助! :)

答案 4 :(得分:0)

这应该这样做:

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

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

答案 5 :(得分:0)

看起来你正试图摆脱字符串前后的空格。

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

trim() Read here

Here is an example:

$string = ' Hello World!      ';

$trimmed = trim($string);

echo $trimmed;
// will print 'Hello World'