我有多个下拉菜单,每个下拉菜单都有不同的字段名称,并且这些字段名称递增。</ p>
我的目标是在对下拉列表进行任何更改后获得字符串/文本的中间部分。我想在中间找到一个数字111
。
rank_item[111][rank]
HTML
<select class="rank" name="rank_item[0][rank]">
<option value="0">-Select Your Rank-</option>
<option value="1">Airman</option>
<option value="2">Senior Airman</option>
</select>
<br>
<br>
<select class="rank" name="rank_item[1][rank]">
<option value="0">-Select Your Rank-</option>
<option value="1">Airman</option>
<option value="2">Senior Airman</option>
</select>
JS
$(document).ready(function() {
$(document).on('change keyup', '.rank', function() {
console.log($(this).attr('name'))
})
});
答案 0 :(得分:4)
使用正则表达式提取]
之前的数字:
const num = this.name.match(/\d+(?=\])/)[0];
\d
-匹配数字(?=\])
-直到下一个字符为]
$(document).on('change keyup', '.rank', function() {
const num = this.name.match(/\d+(?=\])/)[0];
console.log(num)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="rank" name="rank_item[0][rank]">
<option value="0">-Select Your Rank-</option>
<option value="1">Airman</option>
<option value="2">Senior Airman</option>
</select>
<br>
<br>
<select class="rank" name="rank_item[1][rank]">
<option value="0">-Select Your Rank-</option>
<option value="1">Airman</option>
<option value="2">Senior Airman</option>
</select>
答案 1 :(得分:1)
简单的正则表达式:
const str = "rank_item[111][rank]";
const [, num] = /\[(\d+)\]/.exec(str);
console.log(num);
答案 2 :(得分:1)
我不是魔幻数字的拥护者(如果“名称”发生显着变化,会破译),只是指出您不一定需要使用正则表达式即可:
var str = "rank_item[16][rank]";
console.log(str.substring(10, str.length - 7));