Javascript删除不粘字的特殊字符

时间:2017-06-18 14:27:50

标签: javascript jquery html

我想删除所有不贴词的特殊字符。例如:

的Lorem! ?! ipsum .. do'lor ..坐着(amet,)

会变成这样:

的Lorem! ipsum .. do'lor sit-sit amet,

我使用此正则表达式replace(/[^\w\s]/gi, '')但它将删除所有特殊字符。请帮帮我..谢谢^^

1 个答案:

答案 0 :(得分:1)

不幸的是,Javascript RegExp不支持lookahead / lookbehind,但您可以指定一个函数作为替换参数。以下代码段不会产生您需要的确切结果,并且不是非常优化,但它可能指向正确的方向:

var text = 'Lorem! ?! ipsum.. do\'lor .. sit-sit ( amet, )';
text.replace(/(.)([^\w])/g, function($0, $1, $2) {
    if (/\w/.test($1)) {
        return $1 + $2;
    }
    if (/[^\w\s]/.test($1)) {
        return /\s/.test($2) ? ' ' : '';
    }
    return $1;
});

替换函数获得完全匹配作为第一个参数($ 0)以及所有其他匹配组($ 1,$ 2,...)。然后将函数的返回值用作实际替换值。