首页 > 解决方案 > 如何用正则表达式杀死 tabindex="*" 并在 Javascript 中全部替换

问题描述

如何使用正则表达式杀死 tabindex="*" 并在 Javascript 中替换所有内容。

var temp = '<div class="form-group pt-4"><h4><label for="headline_2">[headline]</label><input class="form-control " id="headline_2" name="headline" placeholder="[headlineplh]" tabindex="11" type="text" value=""></h4></div><div class="form-group pt-4"><label for="description_2">[description]</label><input class="form-control " id="description_2" name="description" placeholder="[descriptionplh]" tabindex="12" type="text" value=""></div><div class="form-group pt-4"><label for="order_2">[order]</label><input class="form-control " id="order_2" name="order" placeholder="[orderplh]" tabindex="13" type="number" min="1" max="20" value="1"></div>';

document.getElementById("p").innerHTML = replaceAll(temp, new RegExp("tabindex=\"(\d)*\"", "i"), "");

function replaceAll(string, search, replace) {
  return string.split(search).join(replace);
}
<!DOCTYPE html>
<html>
<body>
<p id="p"></p>
</body>
</html>

标签: javascripthtml

解决方案


它不起作用的原因是,当字符“\d”在字符串中时,它的含义与在正则表达式中时完全不同。
这意味着它new RegExp('\d')不同于new RegExp(/\d/)

因此要修复它,您需要转义反斜杠,方法是在其后面放置另一个反斜杠。

在您的情况下,您应该这样做:new RegExp("tabindex=\"(\\d)*\"", "i"), ""); 这将起作用,因为我将元字符替换为\d\\d因为它位于字符串内部


推荐阅读