Javascript正则表达式删除空间


89

因此,我正在为JQuery编写一个小插件,以删除字符串中的空格。看这里

(function($) {
    $.stripSpaces = function(str) {
        var reg = new RegExp("[ ]+","g");
        return str.replace(reg,"");
    }
})(jQuery);

我的正则表达式当前[ ]+是收集所有空间。此作品。但是它不会留下好味道在我嘴里。我也试过[\s]+[\W]+,但既不工作..

必须有一种更好的(更简洁的)仅搜索空间的方式。

Answers:


229

我建议您使用文字符号和\s字符类:

//..
return str.replace(/\s/g, '');
//..

使用字符类\s和just之间有一个区别' ',例如,它将匹配更多的空白字符,'\t\r\n'等等。寻找' '仅替换ASCII 32空格。

RegExp当你想构造是有用的建立一个动态的模式,在这种情况下,你不需要它。

而且,正如您所说,"[\s]+"不适用于RegExp构造函数,这是因为您正在传递字符串,因此应“双转义”反斜杠,否则它们将被解释为字符串内的字符转义(例如:("\s" === "s"未知逃逸))。



1
str.replace(/\s/g,'')

为我工作。

jQuery.trim 对于IE,具有以下破解功能,尽管我不确定它会影响哪个版本:

// Check if a string has a non-whitespace character in it
rnotwhite = /\S/

// IE doesn't match non-breaking spaces with \s
if ( rnotwhite.test( "\xA0" ) ) {
    trimLeft = /^[\s\xA0]+/;
    trimRight = /[\s\xA0]+$/;
}

1

删除字符串中的所有空格

// Remove only spaces
`
Text with spaces 1 1     1     1 
and some
breaklines

`.replace(/ /g,'');
"
Textwithspaces1111
andsome
breaklines

"

// Remove spaces and breaklines
`
Text with spaces 1 1     1     1
and some
breaklines

`.replace(/\s/g,'');
"Textwithspaces1111andsomebreaklines"

1

在生产中和跨线工作

在多个应用程序中使用它来清理用户生成的内容,以消除多余的空格/返回等,但保留空格的含义。

text.replace(/[\n\r\s\t]+/g, ' ')

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.