2013-12-14 52 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' –