Czy ktoś mógłby podpowiedzieć co robi taki regex w javascripcie?
var reg = new RegExp(input.split('').join('\\w*').replace(/\W/, ""), 'i');
Czy ktoś mógłby podpowiedzieć co robi taki regex w javascripcie?
var reg = new RegExp(input.split('').join('\\w*').replace(/\W/, ""), 'i');
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ś?
input.split('')
Dzieli wyrażenie input
na tablicę znaków.join('\\w*')
Łączy tablicę ze słowem jako elementem łączącymreplace(/\W/, "")
Zamienia wszystkie nie-słowa na nic, czyli je usuwa.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