在JavaScript中使用正则表达式从字符串中删除斜杠

在JavaScript中使用正则表达式从字符串中删除斜杠,javascript,regex,Javascript,Regex,我正在尝试使用以下代码删除客户投诉文本区域中除标点符号以外的所有特殊字符: var tmp = complaint; complaint = new RegExp(tmp.replace(/[^a-zA-Z,.!?\d\s:]/gi, '')); 但在消毒后,它会一直在字符串的前面和后面放置“/” 例如: Hi, I h@ve a% probl&em wit#h (one) of your products. 结果是这样的 /Hi, I have a problem with o

我正在尝试使用以下代码删除客户投诉文本区域中除标点符号以外的所有特殊字符:

var tmp = complaint;
complaint = new RegExp(tmp.replace(/[^a-zA-Z,.!?\d\s:]/gi, ''));
但在消毒后,它会一直在字符串的前面和后面放置“/”

例如:

 Hi, I h@ve a% probl&em wit#h (one) of your products.
结果是这样的

 /Hi, I have a problem with one of your products./
我想要

 Hi, I have a problem with one of your products.

提前感谢您提供的帮助。

变量
complaint
已转换为正则表达式,因为您使用了RegExp()构造函数

这可能不是你想要的。(我假设您希望
投诉
成为字符串)

字符串和正则表达式是两种完全不同的数据类型

您的输出演示了JavaScript如何显示正则表达式(由
/
字符包围)

如果需要字符串,请不要创建正则表达式(即删除RegExp构造函数)

换言之:

complaint = complaint.replace(/[^a-zA-Z,.!?\d\s:]/gi, '');

您不需要RegExp构造函数:

complaint = tmp.replace(/[^a-zA-Z,.!?\d\s:]/gi, '');

甚至不需要一个临时变量,
complaint=complaint.replace(…)
@JeffWalters:你不仅仅需要清理你的代码,它是解决你问题的良方,见jahroy的答案。是的。是的。非常感谢你。我拼命想弄明白这件事。现在我知道了以后的用法。你
替换
,它会生成一个字符串…然后使用该字符串创建一个
regexp
对象…不过不需要创建一个regexp对象