简体   繁体   中英

Javascript match() string letters which are indicated on regular expression of match

I have a variable which contain a string and I want to return only the letters from regular expression (“b” and “D”) or any letter that I indicate on regular expression from match().

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

My problem is that regular expression I think because is returning b and D but the index is not the index from kk variable and I'm not really sure, why ... so if someone can help me a little bit because I stuck

The match method from javascript only returns an array with the given match: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/match

You would need to implement a new function which will loop through all characters of your string and return the given index of the matches. This method could use the function search from String.prototype: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/search

You have to write a new function to get the index of the matched regex like a sample below:-

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

Hope this will help you

Actually this is the answer :

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

if someone will encounter this scenario ...

The match() regular expresion B?d? will return an array indicating the position of "B" and "d" of the initial array kk.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM