GDY*_*GDY 2 javascript regex attributes
我得到了像这样的名字的输入:
<input class="serialize" name="day[0][0]" />
<input class="serialize" name="event[0][0][0][0]" />
Run Code Online (Sandbox Code Playgroud)
我想要做的是替换第一个钳位中的字符(day [ 0 ] [0],event [ 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 );
} );
Run Code Online (Sandbox Code Playgroud)
该.attr()方法接受一个函数,因此您不需要手动迭代每个元素,检索name属性并更新它.
您只需传递一个函数并返回被替换的属性:
$('.serialize').attr('name', function () {
return this.name.replace(/^(\w+)\[.*?\]/, '$1[20]');
});
Run Code Online (Sandbox Code Playgroud)
表达式/^(\w+)\[.*?\]/将在一个或多个\w字符(然后被捕获然后替换)之后选择第一组括号.
哪个会回归:
<input class="serialize" name="day[20][0]">
<input class="serialize" name="event[20][0][0][0]">
Run Code Online (Sandbox Code Playgroud)
作为旁注,\w+将匹配以下一个或多个字符:[a-zA-Z0-9_].如果字符不同,您可能希望使用:
$('.serialize').attr('name', function () {
return this.name.replace(/^(.*?)\[.*?\]/, '$1[20]');
});
Run Code Online (Sandbox Code Playgroud)
或者,如果要根据索引更新第一组括号中的值,可以使用:
$('.serialize').attr('name', function (i) {
return this.name.replace(/^(\w+)\[.*?\]/, '$1[' + i + ']');
});
Run Code Online (Sandbox Code Playgroud)
哪个会回归:
<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]">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
810 次 |
| 最近记录: |