我有一个单词计数器功能,但它没有考虑使用不良标点符号的人,例如:
“hello.world”
那只算一个字。相反,它应该算作2个单词。这就是我使用这个RegEx的原因;
negWords.replace(/[,.!?;\s]+/g,' ');
这样可以正常工作,但如果人们使用双倍空格或标点符号,那么它也算作一个单词;
'你好,'算作2个字,
但它不会将多次出现计为超过1个单词。
'你好,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,仍被算作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,' ');