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

JavaScript replace() Method: remove empty space just at the end and at the beginning of the string

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do I trim a string in javascript?

通过在javascript中使用replace方法,我尝试删除字符串开始和结束之间的空白:

这里是我的代码:

你知道我该如何达到这个结果吗?

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


这叫做修剪。

在正则表达式中需要括号而不是括号,并且在空白说明符上还需要一个乘法器来匹配多个空格:

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

演示:http://jsfiddle.net/guffa/n7xxt/


在脚本开头添加:

1
2
3
4
5
6
7
// 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()删除字符串开头和结尾的空格。


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

另外,还有一件事你不知道,那就是"数量"。换句话说,一旦匹配了一个空格(s),它应该查找多少个空格?在您的示例中,它只匹配一个空格字符。您可能希望匹配字符串左右两侧存在的尽可能多的连续空格。为此,您需要在字符s之后立即附加*(匹配零或多个)或+(匹配一个或多个)。

因此,要重写regex:

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

您可以将这些行复制并粘贴到您的javascript控制台中,以查看您是否获得了所需的输出。这里的regex字面意思是"从字符串开始匹配一个或多个空格字符,或者在字符串结束后立即匹配一个或多个空格字符。"然后replace函数接受该匹配并将其替换为""。


对您的模式进行了细微的修改:

1
(^\s+|\s+$)

然后

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

应该有效;-)


可以使用jquery trim。

1
2
3
4
5
6
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js">
</head>
<body>
        [cc lang="javascript"]
1
 

。var str="第一秒";$("original").html("原始字符串:'"+str+"'");$("trimmed").html("在trimmed之后:""+$.trim(str)+""'");[cc lang="javascript"]


为什么要替换方法?只需使用修剪。即来自jquery库

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