Co robi taki regex w javascripcie?

0

Czy ktoś mógłby podpowiedzieć co robi taki regex w javascripcie?

var reg = new RegExp(input.split('').join('\\w*').replace(/\W/, ""), 'i');
1

join('\\w*') Bierze pod uwagę dowolną ilość "słów", czyli: litery od a do z (duże i małe), cyfry i znak _. Gwiazdka to operator zachłanny, więc zostanie przeszukana jak największa część tekstu, żeby dopasować wyrażenie. W tym przypadku nawet od początku do końca.
replace(/\W/, "") Zamienia każde wystąpienie tekstu, który nie jest słowem (opisałem powyżej), czyli: nie jest literą alfabetu i nie jest cyfrą i nie jest znakiem _. Zatem jakie znaki mogą byś tu dopasowane? Spacja, przecinek, kropka... itd.
Co ogólnie robi linijka, którą wkleiłeś?

  1. input.split('') Dzieli wyrażenie input na tablicę znaków.
  2. join('\\w*') Łączy tablicę ze słowem jako elementem łączącym
  3. replace(/\W/, "") Zamienia wszystkie nie-słowa na nic, czyli je usuwa.
  4. Litera i jako ostatni argument konstruktora oznacza, żeby nie brać pod uwagę "wielkości" liter i dopasować niezależnie od tego, czy "wielkość" litery w tekście pasuje do tej z wyrażenia.

Polecam strony do sprawdzania wyrażeń, np. https://regexr.com/. Są tam podpowiedzi i ściągi. Po wpisaniu wyrażenia i dopasowanego tekstu na dole pojawi się wyjaśnienie co robi dane wyrażenie i co zostało dopasowane. Jest możliwość przełączenia silnika wyrażeń: trzeba zwrócić uwagę czy Javascript czy Perl (PCRE), są tu pewne zdradliwe różnice.
O regex w JS: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

1 użytkowników online, w tym zalogowanych: 0, gości: 1