我的textarea的id是字符串,格式为
ID = '费舍尔[27] .MAN'
我想克隆textarea并增加数字并将id作为fisher[28].man
并将其添加到现有的textarea。
有没有办法用jquery轻松完成这项工作?
var existingId = $("#at textarea:last").attr('id');
var newCloned = lastTextArea.clone();
var newId = newCloned.attr('id');
//add the index number after spliting
//prepend the new one to
newCloned.prepend("<tr><td>" + newCloned + "</td></tr>");
必须有更简单的克隆方法,获取索引号,拆分和前置。
我也试过用regEx
做这件事var existingIdNumber = parseInt(/fisher[(\d+)]/.exec(s)[1], 10);
有人可以帮我这个吗?
答案 0 :(得分:12)
正确的正则表达式就是这个
/fisher\[\d+\].man/
以下是解析id的方法。
id = text.replace(/fisher\[(\d+)\].man+/g,"$1");
//Now do whatever you want with the id
类似地,可以使用相同的替换技术来获得递增的id:
existingId = 'fisher[27].man';
newId = existingId .replace(/(\d+)+/g, function(match, number) {
return parseInt(number)+1;
});
console.log(newId);
答案 1 :(得分:3)
不需要所有额外的代码。改变这一行:
var newId = newCloned.attr('id');
要:
var newId = newCloned.attr('id').replace( /(\d+)/, function(){return arguments[1]*1+1} );
答案 2 :(得分:1)
如果您的ID具有此格式
id='fisher[27].man'
你可以做这样的事情
var startIndex = newId.indexOf('[');
var endIndex = newId.indexOf(']');
var number = parseInt(newId.substr(startIndex + 1, endIndex - startIndex - 1));
var incrementedId = number + 1; // 28
其中
var newId = newCloned.attr('id');
答案 3 :(得分:1)
this question's accepted answer的另一个简单解决方案:
'url1'.replace(/\d+$/, function(n){ return ++n }); // "url2"
'url54'.replace(/\d+$/, function(n){ return ++n }); // "url55"
非常干净和可读。
答案 4 :(得分:0)
您可以使用正则表达式替换轻松完成此操作:
var id = "fisher[27].man";
id = id.replace(/\[(\d+)\]/, function(match, number) {
return '[' + (parseInt(number, 10) + 1) + ']';
});
// id is now "fisher[28].man"
答案 5 :(得分:0)
我很惊讶这个简单的事情没有任何好的实现。所有的例子都忘记了在数字之前有零的情况。下面的代码应该注意这一点。
// 'item001' => 'item002'
function increment_alphanumeric_str(str){
var numeric = str.match(/\d+$/)[0];
var prefix = str.split(numeric)[0];
function increment_string_num(str){
var inc = String(parseInt(str)+1);
return str.slice(0, str.length-inc.length)+inc;
}
return prefix+increment_string_num(numeric);
}
示例:
> increment_alphanumeric_str('test09')
'test10'
唯一的缺点是,如果我们有类似'test99'
的内容,这将会中断。