Do opracować na już wysłana odpowiedź, trzeba globalną mecz, co następuje:
var matches = string.match(/(abc|def)\d{8,11}/g);
ta pasuje do wszystkich podzbiorów napisu, który:
- start z „abc” lub „def”. Jest to część "(abc | def)"
- Następnie następuje 8-11 cyfr. To jest część "\ d {8,11}". \ d dopasowuje cyfry.
Flaga "g" (globalna) przedstawia listę wszystkich dopasowań, a nie tylko pierwszą.
W pytaniu pytałeś o 8-11 znaków zamiast cyfr. Jeśli nie ma znaczenia, czy są cyframi czy innymi znakami, możesz użyć "." zamiast "\ d".
Zauważyłem również, że każdy z przykładowych meczów ma więcej niż 11 znaków po "abc" lub "def". Jeśli jakakolwiek ilość cyfr zrobi, wówczas następujące regex może być lepiej przystosowane:
- dowolna liczba cyfr -
var matches = string.match(/(abc|def)\d*/g);
- co najmniej jedną cyfrę -
var matches = string.match(/(abc|def)\d+/g);
- Przynajmniej 8 cyfr -
var matches = string.match(/(abc|def)\d{8,}/g);
+1, aby poświęcić czas na napisanie wyjaśnienia! –