从字符串末尾删除空格不起作用

时间:2015-04-08 07:05:42

标签: javascript regex

我不明白为什么输出'now'时会输出'now'。

mainQueryString = 'now ';
mainQueryString = mainQueryString.replace('/\s+$/g', ''); /* query without the ending space */
console.log('mainQueryString:', '\''+mainQueryString+'\'');

仍然输出'now'(最后用空格)。

5 个答案:

答案 0 :(得分:8)

为什么要使用正则表达式?

使用trim方法。

mainQueryString = 'now ';
mainQueryString = mainQueryString.trim();

答案 1 :(得分:4)

在正则表达式模式周围删除那些单引号,不要与文字字符串相匹配,而是根据javascript语法删除模式:

mainQueryString = mainQueryString.replace(/\s+$/g, '');
console.log('mainQueryString:', '\''+mainQueryString+'\'');// 'now'

值得一提的是,trim()方法在旧版浏览器中不可用,例如IE7 - 更多关于它的信息:Trim string in JavaScript?

答案 2 :(得分:1)

有人已经提到trim这是一个更好的解决方案,但你的正则表达式无法正常工作的原因是因为你用单引号将其包装起来,将其变成常规字符串。

示例:

var foo = 'foo'.replace('/foo/', 'bar'); // Will contain 'foo'
var bar = 'foo'.replace(/foo/, 'bar'); // Will contain 'bar'

答案 3 :(得分:0)

   //To support only internet explorer 9 and above :
   var str= "now    " ;
   console.log(str.trim()) ;

   //To support internet explorer 8 and below as well :

   if(typeof String.prototype.trim !== 'function') {
     String.prototype.trim = function() {
       return this.replace(/^\s+|\s+$/g, ''); 
     }
   }
   var str= "now    " ;
   console.log(str.trim()) ;

//注意:如果您在项目中使用它们,也可以使用任何JavaScript库(如Jquery.js或dojo.js)中的trim()方法。

答案 4 :(得分:0)

你不需要正则表达式,因为在旧的浏览器中不支持trim方法你可以使用普通的javascript实现这一点:

var mainQueryString = 'now ';
mainQueryString = mainQueryString.substring(0,mainQueryString.lastIndexOf(" "));