1

我有一个单词计数器功能,但它不考虑使用不良标点符号的人,例如:

“你好世界”

那只会算作1个字。相反,它应该算作 2 个单词。这就是我使用这个 RegEx 的原因;

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

这很好用,但如果人们使用双倍空格或标点符号,它也算作一个词;

'你好,'算2个字,

但它不会将更多的出现次数计为超过 1 个单词。

'你好,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, '仍然算2个字。

编辑以获取更多上下文。

4

2 回答 2

5

要从文本中获取单词,您可以执行

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

并且计数是words.length

这里filter(Boolean)调用从数组中删除空字符串。

于 2013-09-02T11:07:26.803 回答
0

+符号表示它应该接受组中的每个字符中的一个或多个。如果你只想要一个,那么你需要删除+.

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

如果您想捕捉一个标点符号或空格后跟任意数量的空格,请尝试以下操作:

negWords.replace(/[,.!?;\s]\s*/g,' ');
于 2013-09-02T11:05:44.993 回答