2016-01-26 2 views
-1

Ниже приведена последняя версия регулярного выражения, которое я использую, и оно выдает ошибку «Invalid Regular Expression».Ошибка регулярного выражения

Любое foo с форматированием регулярного выражения было бы высоко оценено!

Ниже мой код:

// This function gets all the text in browser 
function getText() { 
    return document.body.innerText; 
} 
var allText = getText(); // stores into browser text into variable 

//regex set to rid text of all punctuaction, symbols, numbers, and excess spaces 
var matcher = new RegExp ("/(?<!\w)[a-zA-Z]+(?!\w)/", "g"); 

//cleanses text in browser of punctuation, symbols, numbers, and excess spaces 
var newWords = allText.match(matcher); 

//using a single space as the dividing tool, creates a list of all words 
var Words=newWords.split(" "); 
+1

Использование регулярных выражений буквальный синтаксис или При использовании регулярных выражений конструктора ** 1. ** не нужен разделитель слэши ** 2. ** обратные косые должны быть в два раза бежал. ** Используйте ** 'новый RegExp (" (? Tushar

+0

Регулярное выражение не выполняет вы думаете, что это ... –

+0

@Tushar просто скопировал и вставил вашу рекомендацию, и я все еще получаю ту же ошибку – Lance

ответ

3

Вместо

//regex set to rid text of all punctuaction, symbols, numbers, and excess spaces 
var matcher = new RegExp ("/(?<!\w)[a-zA-Z]+(?!\w)/", "g"); 
//cleanses text in browser of punctuation, symbols, numbers, and excess spaces 
var newWords = allText.match(matcher); 
//using a single space as the dividing tool, creates a list of all words 
var Words=newWords.split(" "); 

Просто используйте

var Words = allText.match(/\b[a-zA-Z]+\b/g); // OR... 
// var Words = allText.match(/\b[A-Z]+\b/ig); 

Это поможет вам все "слова" просто состоящие из ASCII букв в String#match вместе с регулярным выражением /g выберет все подстроки, соответствующие регулярному выражению (который соответствует 1 или более буквам ASCII между границами слов).

JS не поддерживает lookbehind (т. Е. (?<!) или (?<=)), вам понадобится граница слова \b.

Обратите внимание, что вам нужно что-то вроде .replace(/\W+/g, ' ') к Rid текст всех punctuaction, символы, цифры и избыточных пространств, но, кажется, вы просто можете рассчитывать на .match(/\b[a-zA-Z]\b/g).

Смежные вопросы