1

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

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.

提前感谢您提供的任何帮助。

4

2 回答 2

1

因为您使用RegExp()构造函数,所以该变量complaint被转换为正则表达式。

这可能不是你想要的。(我假设你想complaint成为一个字符串)。

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

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

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

换句话说:

complaint = complaint.replace(/[^a-zA-Z,.!?\d\s:]/gi, '');
于 2013-09-12T00:12:52.740 回答
1

您不需要 RegExp 构造函数:

complaint = tmp.replace(/[^a-zA-Z,.!?\d\s:]/gi, '');
于 2013-09-12T00:13:12.587 回答