<分区>
通过使用Javascript,我想转换文本
" [a] b [c]"
到
"[a] b [c]"
我的代码如下:
var test = " [a] b [c]";
test.replace(/\s+\[/g, "[");
alert(test);
然而,结果却是
"[a] b [c]"
我想知道为什么?任何想法?
谢谢!
标签 javascript regex
<分区>
通过使用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, " [");
关于具有特殊字符和空格的 Javascript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18301246/