Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 要替换多个字符的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 要替换多个字符的正则表达式

Javascript 要替换多个字符的正则表达式,javascript,regex,Javascript,Regex,我有一个单词计数器功能,但它不能解释使用糟糕标点符号的人,例如: “你好,世界” 那只算一个字。相反,它应该算作两个单词。这就是我使用这个正则表达式的原因 negWords.replace(/[,.!?;\s]+/g,' '); 这很好,但如果人们使用双空格或标点符号,它也算作一个单词 “你好,,”算作两个字 但它不会将出现的次数计算为超过一个单词 “hello,,,,,,,,,,,,,,,,,,,,,,,,,,,”仍然计为两个单词 为更多上下文而编辑。符号+表示它应该接受组中每个字符中的一个

我有一个单词计数器功能,但它不能解释使用糟糕标点符号的人,例如:

“你好,世界”

那只算一个字。相反,它应该算作两个单词。这就是我使用这个正则表达式的原因

negWords.replace(/[,.!?;\s]+/g,' ');
这很好,但如果人们使用双空格或标点符号,它也算作一个单词

“你好,,”算作两个字

但它不会将出现的次数计算为超过一个单词

“hello,,,,,,,,,,,,,,,,,,,,,,,,,,,”仍然计为两个单词


为更多上下文而编辑。

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

negWords.replace(/[,.!?;\s]/g,' ');
如果要捕获任意数量的空格后的标点字符或空格,请尝试以下操作:

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

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

negWords.replace(/[,.!?;\s]/g,' ');
如果要捕获任意数量的空格后的标点字符或空格,请尝试以下操作:

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

要从文本中获取单词,可以执行以下操作

var words = text.split(/\W+/).filter(Boolean);
计数为
字。长度


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

要从文本中获取单词,可以执行以下操作

var words = text.split(/\W+/).filter(Boolean);
计数为
字。长度


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

我没有得到您想要的。你能说清楚点吗?如果你想修复替换的话,请不要说计数字。请看我更新的问题,希望这能让它更清楚。我没有得到你想要的。你能说清楚点吗?如果你试图修复替换,请不要谈论计数单词。请参阅我的更新问题,希望这能让问题更清楚。如果你只是尝试计数单词,那么@dystroy的版本更好。如果你只是尝试计数单词,那么@dystroy的版本更好。