我希望这个出来
Input =|= Output
=============================================
[b] [/b] =|= [b][/b]
[b] [/b] =|= [b][/b]
[b]Hii[/b] =|= [b]Hii[/b]
[b]Hello There[/b] =|= [b]Hello There[/b]
我认为解决这个问题的唯一方法是正则表达式,我不知道写,所以寻求帮助
答案 0 :(得分:1)
input = input.replace(/\[b\]\s+\[\/b\]/ig, '[b][/b]');
答案 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)
$ 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'