2013-09-02 4 views
1

У меня есть функция счетчика слово, но оно не учитывает людей, использующих плохой пунктуации, например:Regex заменить несколько символов

«hello.world»

Это было только рассчитывать составляет 1 слово. Вместо этого он должен считать это как 2 слова. Вот почему я использую этот RegEx;

negWords.replace(/[,.!?;\s]+/g,' '); 

Это хорошо работает, но если люди используют двойное пространство или знаки препинания, это считается также словом;

'привет ,,' считается как 2-х слов,

, но это не считается более вхождений в более чем 1 слово.

'hello ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,' по-прежнему считается как 2 слова.

Отредактировано для большего контекста.

+1

Я не понимаю, чего вы хотите. Вы можете быть более ясными? И, пожалуйста, не говорите о словах подсчета, если вы пытаетесь исправить замену. –

+0

См. Мой обновленный вопрос, надеюсь, это сделает его более ясным. –

ответ

0

Символ + означает, что он должен принимать один или несколько символов в группе. Если вы хотите только один, то вам нужно удалить +.

negWords.replace(/[,.!?;\s]/g,' '); 

Если вы хотите, чтобы поймать один знак препинания или пробел и любое количество пробелов, попробуйте следующее:

negWords.replace(/[,.!?;\s]\s*/g,' '); 
+0

Если вы просто пытаетесь подсчитать слова, то версия @dystroy лучше. – ColBeseder

5

Чтобы получить слова из текста, вы можете сделать

var words = text.split(/\W+/).filter(Boolean); 

и кол-во words.length.

Здесь вызов filter(Boolean) удаляет пустые строки из массива.

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