替换字符串中单词前后出现的特殊字符

时间:2017-01-06 17:04:24

标签: javascript regex

我需要一些涉及国际角色的正则表达式的帮助。我有一个字符串如下

var text = "'#'Hello' Mo'nique! ''Привет марина!@¿";

我希望在单词之前和之后删除特殊字符,而不是像这样的

之间的特殊字符
  

Hello Mo'niqueПриветмарина

我试过了

var result = text.replace(/[`~¡!@#$%^&*()_|+\-=¿?;:'",.<>\{\}\[\]\\\/]/g,'');

但是会删除所有特殊字符并返回

  

Hello MoniqueПриветмарина

2 个答案:

答案 0 :(得分:0)

negative look-ahead assertionword boundaries一起使用,以避免两个单词之间的符号。

&#13;
&#13;
var text = "'#'Hello' Mo'nique! ''Привет марина!@¿";

var result = text.replace(/(?!\b.\b)[`~¡!@#$%^&*()_|+\-=¿?;:'",.<>\{\}\[\]\\\/]/g,'');

console.log(result);
&#13;
&#13;
&#13;

Regex explanation here

答案 1 :(得分:-1)

使用锚点来匹配字符串的开头和结尾

^[`~¡!@#$%^&*()_|+\-=¿?;:'",.<>\{\}\[\]\\\/]+|[`~¡!@#$%^&*()_|+\-=¿?;:'",.<>\{\}\[\]\\\/]+$