如何使用正则表达式从JavaScript中的字符串中删除所有标点符号?

2022-08-30 01:26:24

如果我有一个字符串,其中包含任何类型的非字母数字字符:

"This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation"

我如何在JavaScript中获得它的无标点符号版本:

"This is an example of a string with punctuation"

答案 1

如果要从字符串中删除特定的标点符号,最好显式删除所需的标点符号

replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"")

执行上述操作仍不会返回您指定的字符串。如果你想删除任何多余的空格,从删除疯狂的标点符号,那么你将需要做这样的事情

replace(/\s{2,}/g," ");

我的完整示例:

var s = "This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation";
var punctuationless = s.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"");
var finalString = punctuationless.replace(/\s{2,}/g," ");

在 firebug 控制台中运行代码的结果:

alt text


答案 2
str = str.replace(/[^\w\s\']|_/g, "")
         .replace(/\s+/g, " ");

删除除字母数字字符和空格之外的所有内容,然后将多个相邻空格折叠为单个空格。

详细说明:

  1. \w是任何数字、字母或下划线。
  2. \s是任何空格。
  3. [^\w\s\']是任何不是数字,字母,空格,下划线或单引号的东西。
  4. [^\w\s\']|_与 #3 相同,只是将下划线添加回去。