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

6

可能重复:
如何在JavaScript中修剪字符串?

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

以下是我的代码:

有什么想法可以实现这个结果吗?

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

请参考这个问题:https://dev59.com/KHRB5IYBdhLWcg3w1Khe - Nick
3
你在提问之前是否真的进行了搜索?如何在JavaScript中修剪字符串? - sp00m
[] 替换为 (),你就会很开心。) - raina77ow
请查看此链接:https://dev59.com/KHRB5IYBdhLWcg3w1Khe - Oussama Jilal
@sm00m OP 可能不知道这个功能被称为“trim”。 - Nick
Steve Leventhal(一位JS正则表达式大师)有一篇不错的写作。参见:更快的JavaScript Trim - ridgerunner
6个回答

4
这叫做修剪。在正则表达式中,您需要使用括号而不是方括号,并且还需要在空格说明符上使用乘数以匹配多个空格:
var s = "   first second     ".replace(/(^\s+|\s+$)/g, '');

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


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() 来删除你的字符串开头和结尾处的空格。


1

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

另外,您缺少的另一件事是“数量”的指示。换句话说,一旦匹配了一个空格(\s),它应该查找多少个空格?在您的示例中,它只匹配单个空格字符。您可能希望匹配左侧和右侧字符串上存在的尽可能多的连续空格。为此,您需要在字符\s之后立即添加*(匹配零个或多个)或+(匹配一个或多个)。

因此,重写您的正则表达式:

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

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


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>

0

4
仅仅为了使用 .trim() 方法而导入整个 jQuery 库是相当疯狂的做法。 - Pointy
如果原始发布者没有提到 jQuery ,则更安全的做法是假设它没有被使用。总之,与其自己发明,不如依靠已有的解决方案这一建议相当不错。 - raina77ow
当然,仅为了一个方法导入jQuery是不明智的。但这只是一个例子。在多个库中,有许多实现trim方法的方式。 - kaz

0

对你的模式进行了一点修改:

(^\s+|\s+$)

然后

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

应该可以工作;-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接