2014-04-23 50 views

回答

0

你可以這樣做:

"cdAbb#2547dbsbz78678".match(/[^a-zA-Z]+/g).join(''); 
//=> #254778678 

RegExp.execg(全球)修改需要在循環中運行,給你所有的比賽。

1

它僅顯示第一個字符的原因是因爲使用execg修飾符(全局)時,此方法用於獲取所有子匹配的循環。

var str = "cdAbb#2547dbsbz78678"; 
var re = /[^a-zA-Z]+/g; 
var myArray; 

while (myArray = re.exec(str)) { 
    console.log(myArray[0]); 
} 

輸出

#2547 
78678 

如果你想你可以使用下面的比賽結合起來。

var str = "cdAbb#2547dbsbz78678", 
    res = str.match(/[\W\d]+/g).join(''); 

# => "#254778678" 

或做更換

str = str.replace(/[a-z]+/gi, ''); 
+1

怎麼會這樣?沒有必要。 '\ W'匹配非單詞字符,'\ d'匹配數字,OP表示「除字母之外」 – hwnd

+0

對不起,我不太瞭解這個問題! –

相關問題