splitRe.js 694 B

12345678910111213141516171819202122232425262728293031323334353637
  1. var md = 'bla bla bla [rel link 1](@2.1) bla bla [link 2](@3.4)'
  2. function extractRelativeLinks(remaining) {
  3. var re=/\[[a-zA-Z0-9\s]+\]\(@\d+\.\d+\)/
  4. var matches;
  5. var firstMatch;
  6. var matchIndex;
  7. var remaining;
  8. var bits = [];
  9. var beforeMatch;
  10. while(1) {
  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. }
  26. return bits;
  27. }
  28. console.log(extractRelativeLinks(md));