2017-06-18 75 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