在javascript中使用replace方法我试图删除字符串开头和结尾之间的空格:
这是我的代码:
任何想法我应该如何实现结果?
input -> " first second ".replace(/[^\s|\s$]/g, ''); // " "
output -> "first second"
答案 0 :(得分:4)
这称为修剪。
正则表达式中需要使用括号而不是括号,而且空格说明符中的乘数也需要匹配多个空格:
var s = " first second ".replace(/(^\s+|\s+$)/g, '');
答案 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库
答案 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, '');
应该有用; - )