全局使用javascript替换点_?

时间:2013-02-07 14:24:35

标签: javascript regex

我试图替换"

中的所有点和空格
var name = "C. S. Lewis"

并将其替换为_

并将其转换为"C_S_LEWIS"

这是我尝试的但它将整个事物转换为下划线(_

var mystring = "C. S. Lewis";
var find = ".";
var regex = new RegExp(find, "g");
alert(mystring.replace(regex, "_"));

2 个答案:

答案 0 :(得分:4)

这是因为点需要在正则表达式中进行转义(除非它是字符类的一部分)。这个表达式应该有效:

var regex = /[.\s]+/g;

alert(mystring.replace(regex, '_'))

它匹配至少一个句点或空格的序列,然后在随后的.replace()调用中用单个下划线替换。

顺便说一句,这不会将新字符串保存回mystring。为此,您需要将替换操作的结果分配回同一个变量:

mystring = mystring.replace(regex, '_')

答案 1 :(得分:0)

.表示'任何角色'。使用\.获取字面点,这意味着在regex字符串中,您必须放置\\.以获得字面下划线,后跟字面点。但是我不确定你为什么要先制作一个字符串 - 你可以这样做:

var find = /\./g;

当然,这不是你想要的 - 你不仅需要任何点,而只需要空格后面的点。那是不同的:

var find = /\.\s+/g;