Из ОП:
"В основном я хочу использовать non-alphas и мой массив commonWords в качестве разделителей для извлечения фраз."
Это делает оба (в отличие от некоторых других ответов ;-)). Возвращает либо строку, либо массив.
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);
.
Возвращает:
"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"]