• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Regex - prosty zapis, jak zrobić?

Object Storage Arubacloud
0 głosów
515 wizyt
pytanie zadane 20 marca 2016 w JavaScript przez Reaper Nowicjusz (220 p.)
Cześć,

Bardzo proszę o pomoc. Mam wyrażenie 4 znakowe, dwie duże litery i dwie cyfry np: AS09. Chciałbym otrzymywać wartość zwróconą zawsze bez trzeciego znaku czyli: AS9. Jak to zapisać w Regular Expression?

Z góry dziękuję :)

4 odpowiedzi

+3 głosów
odpowiedź 20 marca 2016 przez Comandeer Guru (602,340 p.)
wybrane 20 marca 2016 przez Reaper
 
Najlepsza

Nie wiem po co Ci takie voodoo, ale łap:

'AS09'.replace( /(..)(?:.)(.)/, '$1$2' );

Co robi ten kod? Pobiera 2 grupy znaków: pierwsze 2 znaki ((..)) oraz 4. ((.)). Trzeci znak nie jest przechwytywany, bo jest w tzw. non-capturing group ((?:.)). Żeby z tych grup skorzystać, zamieniam dany string na to, co pobrały te dwie grupy – innymi słowy: korzystam z backreferences ('$1$2').

Można to wyrażenie jeszcze bardziej uprościć wykorzystując liczbę powtórzeń:

'AS09'.replace( /(.{2})(?:.)(.)/, '$1$2' )

 

komentarz 20 marca 2016 przez Reaper Nowicjusz (220 p.)
Cudeńko, bardzo dziękuję :)))
komentarz 21 marca 2016 przez niezalogowany

Dlaczego nie po prostu 

'AS09'.replace(/(..).(.)/, '$1$2')

?

komentarz 21 marca 2016 przez Comandeer Guru (602,340 p.)
W sumie tyż można :D jakoś z non-capturing group wydaje mi się czytelniejszy (co znaczy, że już źle ze mną ;)).
0 głosów
odpowiedź 20 marca 2016 przez ScriptyChris Mędrzec (190,190 p.)

Nie wiem jak z regex i jeśli nie znajdziesz odpowiedzi na to pytanie - to alternatywnie możesz to zrobić w taki sposób:

var napis = 'AS09',
    nowyNapis = '';

for (var i = 0, len = napis.length; i < len; i++)
  {
    if (i === 2)
      continue;
    nowyNapis += napis[i];
  }

console.log(nowyNapis);

 

komentarz 20 marca 2016 przez Reaper Nowicjusz (220 p.)
Bardzo dziękuję ale koniecznie muszę mieć regex. ;)
0 głosów
odpowiedź 20 marca 2016 przez uRTLy Bywalec (2,420 p.)

's/[0]*//g'  spróbuj tego 

komentarz 20 marca 2016 przez Reaper Nowicjusz (220 p.)
Dzięki za szybką odpowiedź ale niestety fałsz. ;(
komentarz 20 marca 2016 przez uRTLy Bywalec (2,420 p.)
sorry też nie ogarnaim tego RegExpa do końca :D
komentarz 20 marca 2016 przez uRTLy Bywalec (2,420 p.)
s/0*(\d+)/$1/; Znalazlem to na stackoverflow nie testowałem ale podobno usuwa 0 przed liczbami, czyli leading 0 
komentarz 20 marca 2016 przez Reaper Nowicjusz (220 p.)
Niestety fałsz. Dziękuję ;)
0 głosów
odpowiedź 21 marca 2016 przez 2Kris Nowicjusz (180 p.)

Witam, wzorzec dopasujesz za pomocą wyrażenia: 

^[A-Z]{2}[0-9]{2}$

Następnie dokonaj operacji na stringu usuwając 3 znak.

Podobne pytania

0 głosów
2 odpowiedzi 164 wizyt
pytanie zadane 27 stycznia 2019 w Java przez kingkushlee Gaduła (3,960 p.)
+2 głosów
3 odpowiedzi 354 wizyt
0 głosów
0 odpowiedzi 568 wizyt
pytanie zadane 29 maja 2020 w JavaScript przez poldeeek Mądrala (5,980 p.)

92,632 zapytań

141,500 odpowiedzi

319,879 komentarzy

62,013 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...