我有一个包含字符串的变量,我想只返回正则表达式中的字母(“b”和“D”)或我在匹配时在正则表达式上指出的任何字母( )。
var kk = "AaBbCcDd".match(/b|D/g);
kk.forEach(function(value,index){
console.log(value,index)
});
我的问题是我认为正则表达式是因为返回b和D但索引不是kk
变量的索引而且我不确定,为什么......所以如果有人可以提供帮助我有点因为我卡住了
答案 0 :(得分:1)
来自javascript的match
方法仅返回具有给定匹配的数组:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/match
您需要实现一个新函数,它将循环遍历字符串的所有字符并返回给定的匹配索引。
此方法可以使用String.prototype中的函数search
:https://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"
的位置。