使用正则表达式过滤每个数组项

时间:2013-12-14 21:11:08

标签: javascript regex

我有这个正则表达式,可以将字符串中的任何#转换为哈希标记数组

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

我还有一个从字符串中过滤除alpah数字减去下划线之外的其他内容。

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

但是现在我想要将这两个项结合起来以确保该数组中的每个项目都只包含字母数字值,包括下划线和开头的#

请有人帮忙,谢谢。

1 个答案:

答案 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);