可能重复:
如何在 javascript 中修剪字符串?
通过在 javascript 中使用 replace 方法,我试图删除字符串开头和结尾之间的空格:
这是我的代码:
知道我应该如何获得结果吗?
input -> " first second ".replace(/[^\s|\s$]/g, ''); // " "
output -> "first second"
可能重复:
如何在 javascript 中修剪字符串?
通过在 javascript 中使用 replace 方法,我试图删除字符串开头和结尾之间的空格:
这是我的代码:
知道我应该如何获得结果吗?
input -> " first second ".replace(/[^\s|\s$]/g, ''); // " "
output -> "first second"
这称为修剪。
您需要括号而不是正则表达式中的方括号,还需要空格说明符上的乘数以匹配多个空格:
var s = " first second ".replace(/(^\s+|\s+$)/g, '');
演示:http: //jsfiddle.net/Guffa/N7xxt/
在脚本的开头添加:
// 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()
删除字符串开头和结尾的空格。
您应该使用括号 () 来指定要匹配管道“|”的左侧或右侧 符号,而不是方括号。方括号实际上匹配字符集(即,[grapes] 将匹配“g”、“r”、“a”、“p”、“e”或“s”的单个实例,而 (grapes|apples)将匹配“葡萄”或“苹果”)。
此外,您缺少的另一件事是“数量”的指示。换句话说,一旦你匹配了一个空格(\s),它应该寻找多少个空格?在您的示例中,它仅匹配单个空格字符。您可能希望匹配字符串左侧和右侧存在的尽可能多的连续空格。为此,您需要在字符 \s 之后立即附加 *(匹配零个或多个)或 +(匹配一个或多个)。
所以,要重写你的正则表达式:
var input = " first second ";
var trimmed = input.replace(/(^\s+|\s+$)/g, '');
console.log(trimmed);
您可以将这些行复制并粘贴到 JavaScript 控制台中,以查看是否获得了所需的输出。这里的正则表达式字面意思是,“匹配字符串开头的一个或多个空格字符,或者一个或多个空格字符紧跟字符串结尾。” 然后 replace 函数获取该匹配项并将其替换为 ''。
为什么要更换方法?只需使用修剪。IE。来自 jQuery 库
您可以使用 jQuery 修剪。
<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>
对您的模式进行一点修改:
(^\s+|\s+$)
进而
var string = " test ";
string.replace(/(^\s+|\s+$)/gm, '');
应该管用 ;-)