From the OP:
"Basically I want to use non-alphas and my array of commonWords as delimiters for extracting phrases."
This does both (unlike some other answers ;-) ). It returns either a string or an array.
var commonWords = ["she", "he", "him", "liked", "i", "a", "an", "are"];
var SourceStr = 'She met him where he liked to eat "the best" cheese pizza, didn\'t she, $%&#! Mr. O\'Leary?';
//--- Kill (most) non-alphas, and the keywords replace with tab.
var zRegEx = eval ('/([^0-9a-z\' ]+)|\\s*\\b(' + commonWords.join ("|") + ')\\b\\s*/ig');
var sPhraseList = SourceStr.replace (zRegEx, '\t');
//-- Trim empty results and leading and trailing delimiters.
sPhraseList = sPhraseList.replace (/ *\t+ */g, ', '). replace (/, ?, ?/g, ', ');
sPhraseList = sPhraseList.replace (/(^[, ]+)|([, ]+$)/g, '');
//-- Make optional array:
aPhraseList = sPhraseList.split (/, */g);
//-- Replace "console.log" with "alert" if you're not using Firebug.
console.log (SourceStr);
console.log (sPhraseList);
console.log (aPhraseList);
.
This returns:
"met, where, to eat, the best, cheese pizza, didn't, Mr, O'Leary"
and
["met", "where", "to eat", "the best", "cheese pizza", "didn't", "Mr", "O'Leary"]