let str = "AAAAA-0000021111-1111"; 
let res = str.match(/\d(?=\d{4})/g);
document.write(res);

// to nie działa, wyjście jest podane poniżej:

Wyjście: 0,0,0,0,0,2.

// wybiera jedynie te znaki, które są podświetlone pogrubioną AAAAA- 000002 1111-1111

I tak oczekuję:

A, A, A, A, -, 0,0,0,0,0,2,1,1,1,1, -

Zasadniczo chcę wybrać wszystkie znaki, w tym - lub jakiekolwiek inne znaki specjalne z wyjątkiem ostatnich 4.

Wymieniam kilka dodatkowych próbek do lepszego zrozumienia

Przykładowy1: Oczekiwany wyjście ABC-101010-1111 wynosi: A, B, C, -, 1,0,1,1,0, -

Próbka2: Oczekiwany wyjście ABCD101010-11111 to: A, B, C, D, 1,1,1,1,0, -, 1

Używam Vanilla Js.

Naprawdę doceniam twoje zaangażowanie w to.

Dzięki z góry sir / pani !!!

2
Siva 13 kwiecień 2021, 23:58

1 odpowiedź

Najlepsza odpowiedź

Możesz użyć

/(?!\d{1,4}$)./g

Zobacz REGEX DEMO.

Uwaga: Jeśli musisz dopasować wszystkie znaki, z wyjątkiem ostatnich czterech four dowolne , musisz zastąpić \d z . w Lookhead i może być nawet napisany Bit więcej setnint Way:

/.(?!.{0,3}$)/g

Zobacz Ten demo regex.

Szczegóły :

  • . - każdy pojedynczy znak inny niż przerwa liniowa
  • {{X0.

Regex będzie pasował do dowolnego znaku innego niż znak przerwy w linii (., aby dopasować przerwy liniowe, użyj [^], [\s\S] / [\d\D] / [\w\W] lub dodaj s Flaga), która nie uruchamia się sekwencji jednej, dwóch, trzech lub czterech cyfr na końcu ciągu ((?!\d{1,4}$)).

Zobacz demo JavaScript:

console.log("AAAAA-0000021111-1111".match(/(?!\d{1,4}$)./g))
console.log("AAAAA-0000021111-1111".match(/.(?!.{0,3}$)/g))
1
Wiktor Stribiżew 13 kwiecień 2021, 21:13