regex 正则表达式正则表达式

0lvr5msh  于 2023-02-10  发布在  其他
关注(0)|答案(7)|浏览(331)

所以我正在为JQuery编写一个很小的插件来删除字符串中的空格。see here

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

我的正则表达式目前是[ ]+来收集所有的空格。这工作..然而它没有留下一个好味道在我的嘴里..我也尝试了[\s]+[\W]+,但都不工作..
必须有一种更好(更简洁)的方法来只搜索空格。

a0zr77ik

a0zr77ik1#

我建议您使用文字表示法和\s字符类:

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

使用字符类\s和只使用' '是有区别的,这将匹配更多的空格字符,例如'\t\r\n'等。查找' '将只替换ASCII 32空格。
RegExp构造函数在您想要 * 构建 * 一个动态模式时非常有用,在这种情况下您不需要它。
此外,正如您所说,"[\s]+"不能与RegExp构造函数一起工作,这是因为您传递的是字符串,并且您应该对反斜杠进行“双转义”,否则它们将被解释为字符串内的字符转义(例如:"\s" === "s"(未知转义))。

5cnsuln7

5cnsuln72#

"foo is bar".replace(/ /g, '')
mv1qrgav

mv1qrgav3#

生产和工作中跨越换行符

这在一些应用程序中用于清理用户生成的内容,删除额外的空格/回车等,但保留空格的含义。

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

x0fgdtte4#

这也同样有效:http://jsfiddle.net/maniator/ge59E/3/

var reg = new RegExp(" ","g"); //<< just look for a space.
ilmyapht

ilmyapht5#

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]+$/;
}
ar7v8xwq

ar7v8xwq6#

删除字符串中的所有空格

// 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"
34gzjxbg

34gzjxbg7#

这两种方法都应该有效:

text.replace(/ +/g,' ')

或者:

text.replace(/ {2,}/g, ' ')
const text = "eat healthy     and  drink  gallon of  water."

text.replace(/ +/g,' ')
// eat healthy and drink gallon of water.

text.replace(/ {2,}/g, ' ')
// eat healthy and drink gallon of water.

相关问题