It is probably not a good idea to do this with a regular expression. The regular expression (pure, computer science) "cannot be counted." The only "memory" that he has at any moment is the state of DFA. To combine several words in any order without repetition, you need about 2 ^ n states. Perhaps this is a really awful regex.
(In addition, I mention the regular expressions "pure, computer science" because most implementations are actually extensions and allow you to do things that are not regular. I don’t know any extensions, of course, not a single one in JavaScript, do this, what you want to make less painless with a single template.)
(Object, in JavaScript), . . , . , 0, - ( , ), .