Nodejs的正则表达式全局匹配无法正常工作

时间:2014-09-21 14:55:26

标签: javascript regex node.js twitter express

我已经尝试了一百万次,并且无论如何都在搜索过!我不能让这个工作。 我正在尝试提取推文的文本并查找全局匹配,它只有在绝对匹配时才有效,但如果我在它旁边添加一个单词则不行。仅供参考我想在NodeJS中这样做。

例如:

var userTweet = tweet.text;
var gold = userTweet.match(/#gold/g);
console.log(gold);

console.log(userTweet);

if (userTweet == gold) {

        console.log('got it'); // only grabs it if it exactly matches the tweeted string
    }
    else {
        console.log('not getting it'); // if any other word besides 'gold' is present         doesn't work at all
    }
});

我想补充说我正在Twit流中编写代码。

并放在此功能中:

stream.on('tweet', function(tweet) { 


}

我基本上希望跟踪关键字和特定用户。但是当我尝试跟踪特定单词时,它会覆盖我想要跟踪的用户并跟踪使用该关键字的每个用户。

---对于任何面临同样问题的人,我最终只使用了twitter-text模块。虽然它也有问题。

1 个答案:

答案 0 :(得分:0)

您可以使用/#gold.*?\b/g之类的正则表达式:

> '#gold'.match(/#gold.*?\b/g)
[ '#gold' ]
> '#gold #asdf #golden'.match(/#gold.*?\b/g)
[ '#gold', '#golden' ]
> 'yay #gold #golddigger woohoo!'.match(/#gold.*?\b/g)
[ '#gold', '#golddigger' ]

您可能还想将/i添加到修饰符中,以便找到#GOLD#GoLd等。