替换所有空白字符

169

我想在 JavaScript 中替换所有的空格字符(空格、制表符、换行符)。
如何实现?

我尝试了:

str.replace(/ /gi, "X")

1
http://www.regular-expressions.info/ - Felix Kling
1
什么是“X”以及为什么? - Muhammad Shahzad
string.replace('',"X")是什么意思? - Ramesh Rajendran
这只是一个例子@MuhammadShahzad ;) - Ali Mert Çakar
10个回答

367

您需要使用\s

匹配一个空白字符,包括空格、制表符、换页符和换行符。

相当于

[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

Firefox中,使用[ \f\n\r\t\v],而在IE中则使用\s


str = str.replace(/\s/g, "X");

47
记得给出一个“+1”的评价,因为它展示了replace函数不会修改原始字符串,所以你需要将其赋值回去。 - FishBasketGordo
2
在一个函数中,你可以返回 str.replace,这样你就不需要在那个作用域中进行赋值。 - Stephan Kristyn
记得在 R 中使用 perl = TRUE,例如 gsub(pattern = "[\\s]+", ..., perl = TRUE) - MS Berends

45
我们也可以使用这个方法,如果我们想要将所有连接的多个空格替换为单个字符:
str.replace(/\s+/g,'X');

在此处查看它的实际效果:https://regex101.com/r/d9d53G/1

解释

/ \s+ / g

  • \s+ 匹配任何空白字符(相当于 [\r\n\t\f\v ]
  • + 量词 — 匹配一个或多个字符,尽可能多地匹配,必要时回溯(贪婪模式)

  • 全局模式标志
    • g修饰符:global. 全部匹配(不止第一个匹配)

正则表达式中的加号(+)对于我的用例非常有用,我可以将空格类型字符替换为下划线(_),如果我的用户多输入了一个空格,我真的不想显示多余的下划线。感谢这个! - John

38

\s是一个元字符,可以匹配所有的空白符。你不需要让它不区分大小写——空白符本身就不区分大小写。

str.replace(/\s/g, "X")

8

你尝试过使用\s吗?

str.replace(/\s/g, "X");

7
如果您使用
str.replace(/\s/g, "");

它替换所有的空格。例如:
var str = "hello my world";
str.replace(/\s/g, "") //the result will be "hellomyworld"

5

试试这个:

str.replace(/\s/g, "X")

那行不通。\s\n\t 匹配:任何空白字符,后跟换行符,后跟制表符。 - Daniel Cassidy

3
不是 /gi 而是 /g。
var fname = "My Family File.jpg"
fname = fname.replace(/ /g,"_");
console.log(fname);

提供

"My_Family_File.jpg"

1

实际上它已经工作了,但是

试试这个。

将值 /\s/g 存入一个字符串变量中,例如

String a = /\s/g;

str = str.replaceAll(a,"X");

你从哪里得到了 replaceAll ? - Ionel Lupu

1
您可以使用函数 trimlet str = ' 你好,世界 '; alert(str.trim()); 将删除“你好,世界”周围的所有前导和尾随空格。

1
这将删除“hello”和“world”之间的空格。问题说“所有”空格。 - Ali Mert Çakar

0

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