首页 > 解决方案 > Javascript - 替换页面中以开头的所有字符串

问题描述

我正在撞墙。我正在尝试将页面中以“Person 1”开头的所有字符串替换为“Person 1 (ValueFromPreviousField)”。

我无法应用以“Person 1”逻辑开头的替换整个字符串,所以每次我点击更新按钮时,前一个“(ValueFromPreviousField)”都会停留在字符串的末尾(我显然不想要) .

function test() {
  var N1 = document.getElementById("Name1").value;
        var N2 = document.getElementById("Name2").value;
  document.body.innerHTML = document.body.innerHTML.replace(/Person 1 */g, "Person 1 (" + N1 +")").replace(/Person 2/g, "Person 2 (" + N2 +")");

}

这是一个带有示例 html 的小提琴:http: //jsfiddle.net/ndt50xgo/20/

PS:由于这是由简码生成的 html,我无法为所有这些跨度分配类或 id。

标签: javascriptreplace

解决方案


考虑一下:如果您以 开头x y并替换xx a,则最终以x a y. 现在,如果你在那之后替换xx b,你最终会得到x b a y,因为没有什么会导致你的文本恢复到x y第一个。这同样适用于您的示例。您的正则表达式还应该匹配您添加的任何文本,以确保它也被替换。

因此,它当然/Person 1 */g可以有/Person 1( \(.*?\))?/gand for 。/Person 2 */g/Person 2( \(.*?\))?/g


推荐阅读