Well, you would start with
j.*t.*x
But the .* bits would match anything.  So instead restrict those parts to only match letters:
j[[:alpha:]]*t[[:alpha:]]*x
The [[:alpha:]] thing is a POSIX character class that is roughly the same as [A-Za-z], i.e. any alphabetic character.
That's you pattern.  Then ask grep nicely to only return complete words.  You do that with the -w option.  That would restrict the matches to substrings on each line that are delimited by non-word characters such as spaces, or at the start or end of the line.
Add -i if you want to do case-insensitive matching.
If you want only the bits of each line that actually matches the pattern and not the whole line, additionally use -o.
You'll end up with
grep -i -o -w 'j[[:alpha:]]*t[[:alpha:]]*x'
Testing:
$ grep -i -o -w 'j[[:alpha:]]*t[[:alpha:]]*x' /usr/share/dict/words
janitrix
     
    
jxthen there's no reason why that code won't work. Are you trying to find lines where that appears or just the words/strings?