从字符串中删除标点符号?

Jam*_*oss 3 javascript string methods reduce formula

我正在研究回文函数,并遇到了一个从字符串中删除标点符号的公式。


var punctuation = /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]/g;
var spaceRE = /\s+/g;
var str = "randomstringwith*&^%"
var testStr = str.replace(punctuation, '').replace(spaceRE, '')
document.write(testStr);
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我删除这些内容,.replace(spaceRE, '')结果似乎没有任何变化。我是否遗漏了什么,或者这个公式是否有多余的代码?我也对使用有点困惑str.replace(punctuation,'');

punctuation 代表任何非字母/数字字符并将'' 其替换为空字符串,对吗?谢谢!

Utk*_*nos 5

在像您这样的情况下,您必须问自己哪个更容易:

  • 创建一个阻止某些字符的 REGEXP
  • 创建允许某些字符的 REGEXP

您的选择应该取决于哪个工作量更少且更可靠。

编写阻止所有符号的模式取决于您记住每个可能的符号 - 不仅仅是标点符号,还有表情符号模式、数学符号等等。

如果您只想只允许数字和字母,您可以执行以下操作:

str.replace(/\W/g, '');
Run Code Online (Sandbox Code Playgroud)

\W/ 是“非字母数字”字符的别名。这里唯一需要注意的是字母数字包括下划线,所以如果你也想阻止它们:

str.replace(/\W|_/g, '');
Run Code Online (Sandbox Code Playgroud)