javascript - JS .replace(海峡, 海峡) : how to get a variable in parameter 1 yet work globally?

标签 javascript jquery regex

我有这样一句话:

Visit5Our3Mini4Lab3!

我想在每个数字后添加一个分隔符“_”。我的数字总是 <6 ,所以我只有一位数字。

我找到了一种从 0 到 5 循环的方法,所以在第一轮我替换所有“0”,然后替换所有“1”,等等。不幸的是,这只替换了我的数字的第一次出现(不是全局的)。

for (i=0; i<6; i++) { str = str.replace(i, i+"_"); // this work once only

有没有办法将 .replace() 与变量 i 一起使用但全局?

for (i = 0; i < 6; i++) { str = str.replace(/i/g, i+"_"); // replace all characters "i", NOT what I want.

如何在 .replace() 的第一个参数中获取一个变量,但让它在全局范围内工作。

http://jsfiddle.net/qyWga/3/

http://www.w3schools.com/jsref/jsref_replace.asp


编辑:我也试过:

for (i = 0; i < 6; i++) { 
    var trick = "/"+i+"/g";
    trick = trick.toString(); 
    str = str.replace(trick, i+"_");
}

这是行不通的。还有其他技巧吗?

最佳答案

使用正则表达式,使用 g(全局)标志:

str = str.replace(/([0-6])/g, "$1_");

这使用括号来捕获匹配,匹配由 0-6 中的任意数字组成(包括 06),g 搜索整个字符串中的每个 匹配项。 $1 表示第一个捕获的匹配项,并将其与后面的 _ 一起放入替换中。

关于javascript - JS .replace(海峡, 海峡) : how to get a variable in parameter 1 yet work globally?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19799264/

相关文章:

c# - 用户名的正则表达式

javascript - 如何在浏览器选项卡未激活时保持 JavaScript 运行

javascript - Uglify JS - 压缩未使用的变量

javascript - jQuery 标题闪烁

jquery - 将元素置于一切之上

xml - 使用正则表达式查找控制字符的 XML 字符引用

javascript - 如何显示页眉,当我们使用 jquery 单击垂直选项卡时

javascript - 使用 markerclusterer 为 map v3 手动绘制集群

javascript - 更改图像顺序并更新数据库

regex - 在 perl 中使用数组元素进行模式匹配