2012-03-24 47 views
1

好了所以我执行下面的代码行的JavaScript如何使用提取URL从鸣叫使用正则表达式

RegExp('(http:\/\/t.co\/)[a-zA-Z0-9\-\.]{8}').exec(tcont); 

其中TCONT等于一些字符串,如“测试鸣叫http://t.co/GXmaUyNL”(内容由jquery获得的推文)。

然而,它正在返回,在上面的例子中,'http://t.co/GXmaUyNL,http://t.co/'。

这是令人沮丧的,因为我想要的网址没有结束位 - 在包括逗号之后。

任何想法,为什么这是出现?由于

+0

[正则表达式来找到URL文本]的可能重复(http://stackoverflow.com/questions/5461702/regex-to-find-url-in-a-text) – 2012-03-24 17:30:44

回答

2

首先,摆脱格局的括号 - 它们是不必要的:

RegExp('http:\/\/t.co\/[a-zA-Z0-9\-\.]{8}').exec(tcont); 

其次,正则表达式匹配返回匹配组阵列 - 你想在它的第一项(全比赛):

var match = RegExp('http:\/\/t.co\/[a-zA-Z0-9\-\.]{8}').exec(tcont); 
if(match) { 
    var result = match[0]; 
} 

你有“上月底的一部分”,是因为你的结果是实际上阵列中的原因 - 你在表达有括号中产生的额外的匹配组(他们的部分在附近),其中w应该是match[1]

+0

非常好,那么工作非常感谢你 - 我并不是那种经验丰富的正则表达式,所以真的有帮助。 – neutrino 2012-03-24 17:32:16

+1

我认为'''应该逃脱。 – pimvdb 2012-03-24 17:34:35

+0

可能吗?从技术上来说,似乎无论如何都可以很好地工作 – neutrino 2012-03-24 17:39:56

0

试试这个:RegExp('http:\/\/t\.co\/[a-zA-Z0-9\-\.]{8}').exec(tcont);