正则表达式替换多个字符

时间:2013-09-02 11:02:05

标签: javascript regex

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

  

“hello.world”

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

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

这样可以正常工作,但如果人们使用双倍空格或标点符号,那么它也算作一个单词;

  

'你好,'算作2个字,

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

  

'你好,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,仍被算作2个字。

编辑了更多背景信息。

2 个答案:

答案 0 :(得分:5)

要获取文字中的字词,您可以

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

,计数为words.length

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

答案 1 :(得分:0)

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

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

如果你想在任意数量的空格后捕获一个标点字符或空格,请试试这个:

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