我想替换用户选择的单词中的特殊字符。
我已将代码编写为
var name = "and";
var text = "viverra*.and standard'android viverra'.Vivamus (sit amet felis) scelerisque) ullamcorper (erat) eu mat)tis lorem.";
name = name.replace(new RegExp(/\[(.*?')\]/g), '');
var escaped= name.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$&")
var regexp = new RegExp("\\b(" + escaped + ")\\b", "g");
console.log(text.replace(regexp, "_$&_"));
它为精确单词提供正确的输出,
viverra*._and_ standard'android viverra'.Vivamus (sit amet felis) scelerisque) ullamcorper (erat) eu mat)tis lorem.
但是当用户选择
时name=(sit amet felis) scelerisque) or (erat) or viverra' or viverra*.
它确实取代了特殊字符。
当我将第5行写为
时var regexp = new RegExp(escaped, "g");
它将删除所有特殊字符,但与确切字词&给出"和"的输出。如,
viverra*._and_ st_and_ard'_and_roid viverra'.Vivamus (sit amet felis) scelerisque) ullamcorper (erat) eu mat)tis lorem.
请帮帮我。我想替换特殊字符,并且想要匹配确切的字......
答案 0 :(得分:2)
您可以在转义后添加:
var escaped= name.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$&");
// 2 lines to add:
escaped = escaped.replace(/^(\w)/, "\\b$1");
escaped = escaped.replace(/(\w)$/, "$1\\b");
var regexp = new RegExp(escaped, "g");
只有在有用时才会添加单词边界。