我试图替换所有的点和空格"
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, "_"));
我试图替换所有的点和空格"
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, "_"));
这是因为点需要在正则表达式中进行转义(除非它是字符类的一部分)。这个表达式应该有效:
var regex = /[.\s]+/g;
alert(mystring.replace(regex, '_'))
它匹配至少一个句点或空格的序列,然后在后续.replace()
调用中将其替换为单个下划线。
顺便说一句,这不会将新字符串保存回mystring
. 为此,您需要将替换操作的结果分配回同一变量:
mystring = mystring.replace(regex, '_')
意思是“.
任何字符”。用于\.
获取文字点,这意味着在您的regex
字符串中,您必须\\.
输入文字下划线后跟文字点。但我不确定你为什么要先制作一个字符串 - 你可以这样做:
var find = /\./g;
当然,这不是您要查找的内容 - 您不仅需要任何点,还需要后跟空格的点。那不一样:
var find = /\.\s+/g;