2017-06-18 71 views
0

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

Lorem! ?!存有.. do'lor ..仰卧坐(阿梅特)

会变成这个样子:

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

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

回答

1

不幸的是,Javascript正则表达式不支持向前/向后看,但你可以指定一个函数作为替换参数。下面的代码片段不会产生你所需要的精确结果,而不是很优化,但也许这点你在正确的方向:

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,...)。函数的返回值然后用作实际替换。

+0

谢谢你的解决方案.. :) – Spella