Javascript match()字符串在匹配的正则表达式上指示

时间:2016-08-16 08:17:45

标签: javascript string function match

我有一个包含字符串的变量,我想只返回正则表达式中的字母(“b”“D”)或我在匹配时在正则表达式上指出的任何字母( )。

var kk = "AaBbCcDd".match(/b|D/g); 
     kk.forEach(function(value,index){
     console.log(value,index) 
});

我的问题是我认为正则表达式是因为返回b和D但索引不是kk变量的索引而且我不确定,为什么......所以如果有人可以提供帮助我有点因为我卡住了

3 个答案:

答案 0 :(得分:1)

来自javascript的match方法仅返回具有给定匹配的数组: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/match

您需要实现一个新函数,它将循环遍历字符串的所有字符并返回给定的匹配索引。 此方法可以使用String.prototype中的函数searchhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/search

答案 1 :(得分:1)

您必须编写一个新函数来获取匹配的正则表达式的索引,如下例所示: -

var re = /bar/g,
  str = "foobarfoobar";
while ((match = re.exec(str)) != null) {
  alert("match found at " + match.index);
}

希望这会对你有所帮助

答案 2 :(得分:0)

实际上这就是答案:

var kk = "AaBbCcDd".match(/B?d?/g); 
     kk.forEach(function(value,index){
     console.log(value,index) 
});

如果有人会遇到这种情况...

match()正则表达式B?d?将返回一个数组,指示初始数组kk的"B""d"的位置。