JavaScript - 替换 name 属性中第一个方括号之间的值
JavaScript - Replace the value between the first square brackets in a name attribute
>我得到了这样名称的输入:
<input class="serialize" name="day[0][0]" />
<input class="serialize" name="event[0][0][0][0]" />
我想做的是替换第一个夹子(day[0][0],事件[0][0][0][0])中的字符......但是夹子中的字符可能会改变...
这是最初的代码草案
jQuery( this ).find( '.serialize' ).each( function( index ) {
var attr = jQuery( this ).attr( 'name' );
attr = attr.replace( 'regex magic' ); // This line is the problem
jQuery( this ).attr( 'name', attr );
} );
.attr()
方法接受一个函数,因此您无需手动迭代每个元素、检索 name
属性并更新它。
你可以只传递一个函数并返回替换的属性:
$('.serialize').attr('name', function () {
return this.name.replace(/^('w+)'[.*?']/, '$1[20]');
});
表达式/^('w+)'[.*?']/
将选择一个或多个'w
字符后的第一组括号(然后捕获这些字符,然后替换这些字符)。
这将返回:
<input class="serialize" name="day[20][0]">
<input class="serialize" name="event[20][0][0][0]">
作为旁注,'w+
将匹配以下一个或多个字符:[a-zA-Z0-9_]
.如果字符不同,您可能需要使用:
$('.serialize').attr('name', function () {
return this.name.replace(/^(.*?)'[.*?']/, '$1[20]');
});
或者,如果要根据索引更新第一组括号中的值,可以使用:
$('.serialize').attr('name', function (i) {
return this.name.replace(/^('w+)'[.*?']/, '$1[' + i + ']');
});
这将返回:
<input class="serialize" name="day[0][0]">
<input class="serialize" name="event[1][0][0][0]">
<input class="serialize" name="somethingelse[2][0][0][0]">
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- JavaScript中的函数和对象之间没有区别吗?
- 用于获取两个方括号之间的数字的正则表达式
- 方括号之间的 Javascript 增量号
- 在第二次出现时提取方括号之间的字符串
- 按“|”拆分"而不是方括号之间
- 捕获逗号之间的字符串,而不使用周围的方括号
- 正则表达式在括号和方括号之间获取 ip
- 用于获取最后一个方括号 () 之间的文本的正则表达式
- JavaScript - 替换 name 属性中第一个方括号之间的值
- 返回方括号之间的文本,不包括方括号
- 正则表达式,用于获取方括号之间的字符串和数字-javascript
- Javascript/regex:删除方括号之间的文本
- Javascript RegEx,在方括号之间查找文本
- 抓住方括号之间的第三个片段
- Regex删除方括号和前面方法名之间的内容
- 用Javascript正则表达式替换方括号之间的最后一个数字
- 将方括号()附加到输入字段,并将光标放在它们之间