在全局范围内使用 javascript 用 _ 替换点?

unk*_*own 3 javascript regex

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

var name = "C. S. Lewis"
Run Code Online (Sandbox Code Playgroud)

并将它们替换为 _

并将其转换为 "C_S_LEWIS"

这是我尝试过的,但它将整个内容转换为下划线 ( _)

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

Ja͢*_*͢ck 5

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

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

alert(mystring.replace(regex, '_'))
Run Code Online (Sandbox Code Playgroud)

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

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

mystring = mystring.replace(regex, '_')
Run Code Online (Sandbox Code Playgroud)