好的,我正在javascript中执行以下代码行
RegExp('(http:\/\/t.co\/)[a-zA-Z0-9\-\.]{8}').exec(tcont);
其中tcont等于某些字符串,如'test tweet to http://t.co/GXmaUyNL'(由jquery获取的推文内容)。
然而,在上面的例子中,它正在返回'http://t.co/GXmaUyNL,http://t.co/'。
这是令人沮丧的,因为我希望网址没有结尾 - 包括逗号后。
为什么会出现这种想法?感谢
答案 0 :(得分:2)
首先,摆脱模式中的parens - 它们是不必要的:
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];
}
你有“最后一部分”的原因是因为你的结果是实际上一个数组 - 你在表达式中的parens导致了一个额外的匹配组(他们所在的部分) ),这将是match[1]
。
答案 1 :(得分:0)
试试这个:RegExp('http:\/\/t\.co\/[a-zA-Z0-9\-\.]{8}').exec(tcont);