具有特殊字符和空格的 Javascript 正则表达式

标签 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/

相关文章:

javascript - AngularJS - Controller 代码是逐行执行的吗?

javascript - 检索数组内的元素编号

javascript - 同时进行ajax调用

javascript - 正则表达式 - 忽略引号/HTML(5) 属性过滤之间的文本

javascript - 在 div 中包围希伯来语和英语文本

javascript - 在 Nodejs 中解析大型 JSON 文件并独立处理每个对象

javascript - 理解对象时遇到问题(获取母节点和子节点之间的年龄差异)

regex - 有没有办法在正则表达式中定义自定义速记?

javascript - 正则表达式扩展到句子,在标点符号处停止

java - 如何创建与引号外的特定文本匹配的正则表达式