JavaScript replace()方法:在字符串的结尾和开头删除空格

时间:2012-08-22 12:23:17

标签: javascript regex replace

  

可能重复:
  How do I trim a string in javascript?

在javascript中使用replace方法我试图删除字符串开头和结尾之间的空格:

这是我的代码:

任何想法我应该如何实现结果?

input  -> "   first second     ".replace(/[^\s|\s$]/g, ''); // " "
output -> "first second"

6 个答案:

答案 0 :(得分:4)

这称为修剪。

正则表达式中需要使用括号而不是括号,而且空格说明符中的乘数也需要匹配多个空格:

var s = "   first second     ".replace(/(^\s+|\s+$)/g, '');

演示:http://jsfiddle.net/Guffa/N7xxt/

答案 1 :(得分:3)

在脚本开头添加:

// Add ECMA262-5 string trim if not supported natively
//
if (!('trim' in String.prototype)) {
    String.prototype.trim= function() {
        return this.replace(/^\s+/, '').replace(/\s+$/, '');
    };
}

然后使用yourString.trim()删除字符串开头和结尾的空格。

答案 2 :(得分:1)

您应该使用括号()来指定您想要匹配管道的左侧或右侧“|”符号,而不是方括号。方括号实际上匹配字符集(即[grape]将匹配“g”,“r”,“a”,“p”,“e”或“s”的单个实例,而(葡萄|苹果)会匹配“葡萄”或“苹果”)。

另外,你错过的另一件事是“数量”的指示。换句话说,一旦你匹配一个空格(\ s),它应该寻找多少个空格?在您的示例中,它仅匹配单个空格字符。您可能希望匹配字符串左侧和右侧存在的连续空格。为此,您需要在角色后立即附加*(匹配零或更多)或+(匹配一个或多个)。

所以,重写你的正则表达式:

var input = "      first second      ";
var trimmed = input.replace(/(^\s+|\s+$)/g, '');
console.log(trimmed);

您可以将这些行复制并粘贴到JavaScript控制台中,以查看是否获得了所需的输出。这里的正则表达式字面上说,“匹配字符串开头的一个或多个空格字符,或者紧跟字符串结尾的一个或多个空格字符。”然后,replace函数接受该匹配并用''。

替换它

答案 3 :(得分:0)

为什么要替换方法? 只需使用修剪。 IE浏览器。来自jQuery库

http://api.jquery.com/jQuery.trim/

答案 4 :(得分:0)

你可以使用jQuery trim。

<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
        <pre id="original"></pre>
        <pre id="trimmed"></pre>
<script>
  var str = "         first second         ";
  $("#original").html("Original String: '" + str + "'");
  $("#trimmed").html("After trimed: '" + $.trim(str) + "'");
</script>

</body>
</html>

答案 5 :(得分:0)

对您的模式进行改进:

(^\s+|\s+$)

然后

var string = "     test     ";
string.replace(/(^\s+|\s+$)/gm, '');

应该有用; - )