我正在尝试使用此代码从客户投诉textarea中删除除标点符号之外的所有特殊字符:
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.
提前感谢您提供的任何帮助。
答案 0 :(得分:1)
变量complaint
转换为正则表达式,因为您使用 RegExp()构造函数。
这可能不是你想要的。 (我假设您希望complaint
成为字符串)。
字符串和正则表达式是两种完全不同的数据类型。
您的输出演示了JavaScript如何显示正则表达式(由/
字符包围)。
如果你想要一个字符串,不要创建一个正则表达式(即删除 RegExp构造函数)。
换句话说:
complaint = complaint.replace(/[^a-zA-Z,.!?\d\s:]/gi, '');
答案 1 :(得分:1)
您不需要RegExp构造函数:
complaint = tmp.replace(/[^a-zA-Z,.!?\d\s:]/gi, '');