2013-06-02 45 views

回答

2

嘗試用這個表達式替換:

/^[^a-z\d]*|[^a-z\d]*$/gi 
+0

爲什麼要添加這個編輯?我們剛剛與您討論過,\ w'匹配下劃線,而OP不需要這個。 – kirelagin

+0

哦,哈哈你是對的。 Nevermind ... – elclanrs

0

只需使用正則表達式和替換

'--I have a dog!!!'.replace(/[^a-zA-Z 0-9]*/g,''); // "I have a dog" 

將從字符串的所有位置刪除任何其他字符不是數字,字母和空間。

如果你想從開始顯式刪除,只有終止,那麼你就需要這樣的事情:

'--I have !!! a dog!!!'.replace(/^[^a-zA-Z 0-9]*|[^a-zA-Z 0-9]*$/g,''); // "I have !!! a dog" 

regular-expressions.info瞭解更多的正則表達式,有JavaScript的例子太多。

0

試試這個:

var x = '--I have a dog!!!'; 
x = x.replace(/[^0-9A-Za-z\s]/g, ''); 

// results in "I have a dog" 
+0

@TimPietzcker - 完全沒有。你試過了嗎?你有沒有在那裏看到'\ s'。順便說一句,我在發佈任何東西之前使用Chrome控制檯進行測試:-) – techfoobar

+0

好吧,我似乎今天早上沒有進入最佳狀態。抱歉。但是,這個正則表達式不符合「從字符串的開頭/結尾刪除」的要求。 –

+0

@TimPietzcker - 啊,你說得對。不使用'|' – techfoobar

0

使用正則表達式來解決這個問題:

var s = '--I have a dog!!!'; 
s = s.replace(/^[^a-z\d]*|[^a-z\d]*$/gi, ''); 
+0

不能查看開始和結束Afaic它不包含'!',但它肯定包含'_'。 – kirelagin

+0

@kirelagin:點擊這裏http://jsbin.com/ucaqes/1/edit – elclanrs

+0

@elclanrs我不知道爲什麼會發生這種情況。我已經在我的瀏覽器中試過'「嗨!」。match(/ \ w * /)',並且確實匹配了'「hi」'。 – kirelagin

1
s = "--I have a dog!!!" 
s.replace(/^[^a-zA-Z\d]*(.*?)([^a-zA-Z\d])*$/, "$1") 

請注意,這將正好是你要求什麼。它將從字符串的開頭和結尾刪除僅包含的非字母數字字符。字符串中間的所有非alpha和非數字都不會被刪除。

+0

@TimPietzcker喲意味着什麼不需要?當然,它一定是非貪心的。 – kirelagin

+0

@TimPietzcker是的,我修復了'z'的情況,謝謝你指出了這一點。 – kirelagin

+1

啊,對不起,對於不情願的量詞你是對的。 –

相關問題