Javascript删除了不坚持单词的特殊字符



我想删除所有不粘在单词上的特殊字符。 例如:

洛伦!?! ipsum.. do'lor .. 坐坐 ( 阿米特, (

会变成这样:

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

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

不幸的是,Javascript RegExp 不支持前瞻/后视,但您可以指定一个函数作为替换参数。以下代码片段不会产生您需要的确切结果,并且没有经过优化,但也许它为您指明了正确的方向:

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 (/[^ws]/.test($1)) {
        return /s/.test($2) ? ' ' : '';
    }
    return $1;
});

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

最新更新