Во-первых, для этого вам нужно использовать массивы, а не регулярные выражения, потому что они будут быстрее. Регулярное выражение на несколько порядков сложнее и, следовательно, слишком тяжело. Как говорит Этвуд, программист считает, что может решить проблему с помощью регулярного выражения. Тогда у него две проблемы.
Итак, ниже приведена быстрая реализация, которая использует ваш список строк мусора и выполняет свою работу, используя встроенную скорость словаря javascript для проверки, является ли слово мусором или нет, и с обработкой знаков препинания. Есть небольшая тестовая страница , на которой вы можете ее попробовать.
function splitwords(str) {
var unpunctuated = unpunctuate(str);
var splitted = unpunctuated.split(" ");
return splitted;
}
function unpunctuate(str) {
var punctuation = ['.', ',', ';', ':', '-'];
var unpunctuated = str;
for(punctidx in punctuation) {
punct = punctuation[punctidx];
// this line removes punctuation. to keep it, swap in the line below.
//unpunctuated = unpunctuated.replace(punct," "+punct+" ");
unpunctuated = unpunctuated.replace(punct,"");
}
return unpunctuated;
}
var garbageStrings = ['of', 'the', "in", "on", "at", "to", "a", "is"];
var garbagedict= {};
for(garbstr in garbageStrings) {
garbagedict[garbageStrings[garbstr]] = 1;
}
function remove(str) {
words = splitwords(str);
keeps = [];
for(wordidx in words) {
word = words[wordidx];
if(word in garbagedict) {
// ignore
} else {
keeps.push(word);
}
}
return keeps.join(" ");
}