从字符串末尾删除空格无效

3
我不明白为什么这会输出“now ”,而不是应该输出“now”。
mainQueryString = 'now ';
mainQueryString = mainQueryString.replace('/\s+$/g', ''); /* query without the ending space */
console.log('mainQueryString:', '\''+mainQueryString+'\'');

仍然输出 'now'(末尾有空格)。
5个回答

8

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

使用 trim 方法。

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

感谢关于 Trim 的提示。 - Aiden
1
实际上,trim() 函数使用两个正则表达式,第一个是用于行开头修剪的 /^\s+/g,第二个是用于尾部修剪的 /\s+$/g - MaxZoom

4

只需删除正则表达式模式周围的单引号,即可根据JavaScript语法匹配模式而不是字面字符串:

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

值得一提的是,trim() 方法在旧版本的浏览器中不可用,比如 IE7 - 更多信息请参见这里:JavaScript 中如何去除字符串空格?

1

有人已经提到了trim,这是一个更好的解决方案,但你的正则表达式无法工作的原因是你将它用单引号括起来,将其转换为普通字符串。

示例:

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

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()方法。


0

你不需要正则表达式,因为trim方法在旧浏览器中不受支持,你可以使用纯JavaScript来实现:

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

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