带有特殊字符和空格的Javascript Regex

Javascript Regex with Special Character and Space

本文关键字:Javascript Regex 空格 特殊字符      更新时间:2023-09-26

通过使用Javascript,我想转换文本

"  [a] b    [c]" 

"[a] b [c]"

我的代码如下:

var test = "  [a] b    [c]";
test.replace(/'s+'[/g, "[");
alert(test);

然而,结果是

"[a] b    [c]"

我想知道为什么?知道吗?

谢谢!

字符串是不可变的。因此replace不会更改test,而是返回一个已更改的字符串。因此,您需要分配结果:
test = test.replace(/'s+'[/g, "[");

请注意,这将导致[a] b[c]。要获得实际结果,您可能需要使用:

test = test.replace(/(^|'s)'s*'[/g, "$1[");

这样可以确保在第一个空格字符不在字符串开头的情况下将其写回。

或者,先使用trim,然后手动写回一个空格:

test = test.trim().replace(/'s+'[/g, " [");

修剪

test = test.replace(/(^'s+|'s+$)/g, test);

或者,如果您的浏览器支持str.trim() ,您也可以使用它

test = test.trim();

注意:如果您需要支持不提供str.trim的浏览器,您可以始终使用es5填充


将空间压缩为一个

test = test.replace(/'s+/g, " ");

单行

test = test.trim().replace(/'s+/g, " ");

几个测试

var cleanString = function(str) {
  console.log(str.trim().replace(/'s+/g, " "));
};
var examples = [
  "    [a]  b     [c]      ",
  " [a]    [b]    [c]   [d]",
  "[a]       b [c]         ",
  "              [a] b [c] "
];
examples.map(cleanString);

输出

[a] b [c]
[a] [b] [c] [d]
[a] b [c]
[a] b [c]