This is a pretty messy if statement, I'll figure out a way to clean it up.

I do have a question on implementation: 
As you can see I added the specialCaseChars array for characters that should be considered part of the 'word' when inside it. I only set it to period and comma here.

I'm wondering if I should change it so that any character would be considered part of the word if inside, instead of whitelisting (consider part of the word if not alpha-numeric but the next character in text is anything other than whitespace).

For example, by including all chars, then: this-is-hyphenated would be considered one word, instead of breaking it up like |this|-|is|-|hyphenated|