我有这个样本内容是克隆的,有ID的被替换。
<div id="tabs-1"><div class="ui-widget">
<label for="tags">Wohnort: </label> <input class="tags" id="tags-1" name="tags[]" type="text"/>
</div>
<input type="hidden" class="hid_id" id="hid_id-1" name="hid_id[]"/><input type="hidden" id="hid_id2-1" class="hid_id2" name="hid_id2[]"/>
<div class="ui-widget">
<label for="jahr">Geburtstag: </label> <input type="text" id="jahr-1" class="jahr dated" name="jahr[]" placeholder="dd.mm.yyyy" pattern="^[a-zA-Z0-9\.]*$" class="dated"/>
</div></div>
获取id的正则表达式可以是
/id="[^"]+-[^"]+"/g
可在此处检查:https://regexr.com/匹配的数组是id=“tags-1”、id=“hid_id-1”等。现在我希望将它们更改为id=“tags-2”、id=“hid_id-2”等。
因此,我不能只是静态地替换,而是应该使用匹配数组Each,拆分并重用第一部分,之后添加新的id。
我的代码得到的id是这样的:(变量new_id预先获得增加的id)
jQuery('#tabs-1').children().clone()
.html(function(i, oldHTML) {
var old_base = oldHTML.split("-");
var new_result = old_base[0]+"-"+ new_ide;
alert(new_result);
var new_html = oldHTML.replace(/id="[^"]+-[^"]+"/g, new_result);
})
.appendTo("#tabs-"+new_id);
当我把匹配放在一个数组中时,我可以这样做:
arr.forEach(myFunction);
myFunction(item, index, arr){
new_var = item.split("-");
new_full_id = new_var[0] +"-"+new_full_id;
}
我怎样才能把这些组合起来做预期的事情?-非常感谢
1条答案
按热度按时间jdgnovmf1#
好的,首先,这个解决方案会正确地工作,但它绝对不是一个万无一失的解决方案;它也不是可读性最好的。理想情况下,您应该将其解析为嵌套的HTMLEelement,并替换格式中的每个id。不过,这里有一个解决方案:
如using this link所示,对于每个匹配项,提取最后一个数字,将其递增,然后再加回去,代码如下所示。
PS:这将在大多数现代浏览器中工作,但为了安全起见,您应该检查此链接:caniuse.com - Regex Lookbehind