Moje wyrażenie regularne = "(d+)1+"
Moim celem jest uchwycenie powtarzających się wzorów, takich jak 2323, 1212, 345345, które mają różne cyfry. Obecne wyrażenie regularne przechwytuje również 11 222,11111, które muszę wykluczyć
Przykład - Dla danych wejściowych = 44556841335158684945454545
Mecze są 44 55 45454545 Mecze powinny być - 45454545
Jak napisać regex, który wyklucza 44 i 55 i daje wyniki, które mają różne cyfry
Odpowiedzi:
0 dla odpowiedzi № 1Aby powiedzieć „powtarzane dwie różne liczby”, możesz spróbować
((d)(?!2)d)1
Nawiasy przechwytujące są ponumerowane od lewej; więc 1
dopasowuje całą zewnętrzną parę nawiasów i (?!2)
odnosi się do wewnętrznych nawiasów wokół pierwszej cyfry, ograniczając drugą cyfrę, aby nie mogła być identyczna z pierwszą cyfrą.
Próbny: https://regex101.com/r/5f2CEf/1
Oczywiście dodaj +
na koniec, aby pokryć wszystkie sąsiadujące powtórzenia meczu.
1 dla odpowiedzi nr 2
Oto regex, który moim zdaniem chcesz:
(d)((?!1)d)
Trochę wyjaśnienia:
(d)
d dopasowuje cyfrę (równą [0-9])
((?!1)d)
Negatywne spojrzenie w przyszłość
(?!1)
Upewnij się, że poniższy Regex nie pasuje
1
dopasowuje ten sam tekst, co ostatnio dopasowany przez pierwszą grupę przechwytującą
d
dopasowuje cyfrę (równą [0-9])
Oto szybkie demo JS:
var s = "44556841335158684945454545"
console.log(s.match(/(d)((?!1)d)/g))