splitRe.js 588 B

12345678910111213141516171819202122232425262728293031
  1. var re=/\[[a-zA-Z0-9\s]+\]\(@\d+\.\d+\)/
  2. var md = 'bla bla bla [rel link 1](@2.1) bla bla [link 2](@3.4)'
  3. var matches;
  4. var firstMatch;
  5. var matchIndex;
  6. var remaining = md;
  7. var bits = [];
  8. var beforeMatch;
  9. var afterMatch;
  10. do {
  11. matches = re.exec(remaining);
  12. if(! matches) {
  13. break;
  14. }
  15. firstMatch = matches[0];
  16. matchIndex = remaining.indexOf(firstMatch);
  17. beforeMatch = remaining.slice(0, matchIndex);
  18. remaining = remaining.slice(firstMatch.length + matchIndex);
  19. bits.push({
  20. md: beforeMatch
  21. });
  22. bits.push({
  23. link: firstMatch
  24. });
  25. } while(1)
  26. console.log(bits);