3

我试图替换所有的点和空格"

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, "_"));
4

2 回答 2

5

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

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

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

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

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

mystring = mystring.replace(regex, '_')
于 2013-02-07T14:25:34.103 回答
0

意思是“.任何字符”。用于\.获取文字点,这意味着在您的regex字符串中,您必须\\.输入文字下划线后跟文字点。但我不确定你为什么要先制作一个字符串 - 你可以这样做:

var find = /\./g;

当然,这不是您要查找的内容 - 您不仅需要任何点,还需要后跟空格的点。那不一样:

var find = /\.\s+/g;
于 2013-02-07T14:30:06.043 回答