jQuery,如何split()字符串并在中间获取目标字符串?例如:sample_str [targeted_str] [other_str]

时间:2019-05-07 08:42:23

标签: javascript jquery string

http://jsfiddle.net/150aby4u/

我有多个下拉菜单,每个下拉菜单都有不同的字段名称,并且这些字段名称递增。<​​/ 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'))
    })
});

3 个答案:

答案 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));