Z metodą split to bym uważał. Osobiście zrobiłbym to po prostu metodą String.prototype.match, np.:
const str = 'To jest napis.';
str.match( /[a-z]+/gi ); //["To", "jest", "napis"]
const str2 = 'Ale fajny napis... hurra!';
str2.match( /[a-z]+/gi ); //["Ale", "fajny", "napis", "hurra"]
W metodzie split trzeba by zrobić nieco bardziej zagmatwane wyrażenie regularne, gdyż tak proste dopasuje no do końca to co chcemy:
const str3 = '...to jest, napis...!';
str3.split( /([a-z]+)/gi ); //["...", "to", " ", "jest", ", ", "napis", "...!"]
Chodzi mi o to, że przecież tekst (napis) składa się nie tylko z literek, ale i ze znaków interpunkcyjnych i specjalnych, liczb itp. Zakładam więc, że chcemy je wyciąć i interesują nas tylko i wyłącznie litery.
Co do znalezienia w takiej tablicy najdłuższego słowa to jest kilka opcji, np. przesortowanie tablicy wg malejącej długości ciągów i odczytanie array[0] + oczywiście dodanie sprawdzenia dla podanych warunków brzegowych.
Zgodnie z tym co napisał Krzycho92 nie podam Ci pełnego gotowca (bo widzę, że chyba jakieś nowe zasady weszły w tym zakresie), ale myślę, że dostałeś tyle informacji, że na pewno to rozkminisz :)