如何在冒号上拆分此行(JavaScript),除非冒号前面有http或https?

如何在冒号上拆分此行(JavaScript),除非冒号前面有http或https?,javascript,regex,Javascript,Regex,我要拆分这行: at myFunc http://mysite.com/test.php:13:24 为此: at myFunc http://mysite.com/test.php 13 24 我尝试过使用正则表达式(见下文),但它们是错误的: line.split( /[^http]:/ ); line.split( /[^http][:]/ ); line.split( /(?!http):/ ); line.split( /(?!http)[:]/ ); 我该怎么做呢?JavaSc

我要拆分这行:

at myFunc http://mysite.com/test.php:13:24
为此:

at myFunc http://mysite.com/test.php
13
24
我尝试过使用正则表达式(见下文),但它们是错误的:

line.split( /[^http]:/ );
line.split( /[^http][:]/ );
line.split( /(?!http):/ );
line.split( /(?!http)[:]/ );

我该怎么做呢?

JavaScript没有lookbehind:(

哈克:把绳子倒过来 调整问题#1:匹配冒号不后跟// 调整问题2:只匹配最后两个冒号
在正则表达式中搜索“lookbehinds”和“lookaheads”。这应该会为您指明方向。我感谢您的帮助,但您会注意到我使用了上面的一个,但它仍然不起作用,因此我无法正确理解lookaheads(JavaScript没有lookbehind).Javascript没有后视功能feature@DonRhummy:是的,但搜索它会发现:@Tadeck这对我有什么帮助?我不知道如何将其应用于我需要在冒号上拆分的情况,除非前面有http。他们正在替换字符以查找匹配项,但我需要所有字符,只需拆分。请帮助我理解。您的“调整的问题#1”是如此完美,如此简单。我应该看看它。谢谢!
var reverse = function(s) { return s.split('').reverse().join(''); };
var parts = reverse(line).split( /:(?!ptth)/ ).map(reverse).reverse();
var parts = line.split( /:(?!\/\/)/ );
var parts = line.match( /(.*):(.*):(.*)/ ) ;
parts.shift();