Javascript Regex:如何删除某些字符周围的所有空格?

时间:2015-10-12 10:12:27

标签: javascript regex

可能我做错了,我找到了一个正则表达式来实现PHPC#中所需的替换,但是将它应用于javascript失败了。

示例:

text ( 4 |-4 | 1 "test" ) [ 0 50 90 ]

应该清理到:

text(4|-4|1 "test")[0 50 90]

如您所见,我删除括号前后的所有空格和|。

到目前为止我的代码:

        // remove whitespaces around brackets []
        text = text.replace(/\s*\[\s*(.*?)\s*]\s*/g, '[$1]');
        // remove whitespaces around brackets ()
        text = text.replace(/\s*\(\s*(.*?)\s*\)\s*/g, '($1)');
        // remove all whitespaces around | (FAILS)
        // text = text.replace(/\s*\|\s*(.*?)\s*\|\s*/g, '|$1|');
        // text = text.replace(/\s*|\s*/, '$1');

看起来也太复杂了。

我想知道每个标志的正则表达式。

并非所有替代品都在一个正则表达式中,因为学习我希望每行更换一次。

2 个答案:

答案 0 :(得分:5)

这样可以解决问题:

var text = 'text ( 4 |-4 | 1 "test"  )  [ 0 50 90 ]';
text = text.replace(/\s*([|()[\]])\s*/g, '$1');

alert(text)

这个正则表达式查找(可选)空格,然后,在一个capature组中,一个不能有边界空格的字符,然后是另一个可选的空格,并用所有字符替换所有这些空格,有效地删除空格。

现在,如果您想将替换放在单独的行上,并且只替换空格字符,保留其他空格,请尝试以下操作:

var text = 'text ( 4 |-4 | 1 "test"  )  [ 0 50 90 ]';
text = text.replace(/ *([|]) */g, '$1')
           .replace(/ *([(]) */g, '$1')
           .replace(/ *([)]) */g, '$1')
           .replace(/ *([[]) */g, '$1')
           .replace(/ *([\]]) */g, '$1');

alert(text)

或者这个:

var text = 'text ( 4 |-4 | 1 "test"  )  [ 0 50 90 ]';
text = text.replace(/ *(|) */g, '$1')
           .replace(/ *(\() */g, '$1')
           .replace(/ *(\)) */g, '$1')
           .replace(/ *(\[) */g, '$1')
           .replace(/ *(\]) */g, '$1');

alert(text)

对于单个字符,字符类有点矫枉过正,但是你需要转义()[]。 (就像我在最后一个片段中所做的那样)

答案 1 :(得分:2)

诀窍是正确地逃避保留的字符,因此单个error_reporting(E_ALL); 变为isset($_GET["test"]) ,依此类推。管道也是保留字符,因此您需要执行相同的操作:

[