2013-12-14 139 views
0

每個數組項目我有這樣的正則表達式在一個字符串任何#轉換成散列標籤陣列過濾器,正則表達式

myArr= myStr.match(/#\S+/g); 

我也有這個從比alpah數字減去下劃線等字符串任何過濾掉。

myStr= myStr.replace(/[^a-zA-Z0-9_]/g, ""); 

但現在我想結合這2,以確保每一個數組中的項目中只包含字母數字值,包括下劃線,並在開始時的#

任何人都可以幫忙,謝謝。

+0

因爲它是兩種不同的操作。 –

回答

1

爲什麼這麼複雜?

myArr = myStr.match(/#[a-z0-9_]+/gi); 

編輯:我誤解了你的意圖。這裏有一個稍微簡單一點,但更高效的解決方案:

myArr = myStr.replace(/#\S+/g,function(m) { 
    return "#"+m.replace(/[^a-z0-9_]+/gi,""); 
}).match(/#\S+/g); 
+0

gi需要g。 –

+0

@NoahR呃,沒有。這是故意的。 –

+0

謝謝,我摘下了'我'。當我輸入'#hello_wor-ld'期待'#hello_world'時,我得到'#h' –