匹配角色但不包括该角色和之后的所有内容

时间:2015-06-20 04:49:09

标签: javascript regex

在有人说它是thisthis的副本之前。 JavaScript没有look behind,所以我一直在努力解决这个问题。如上所述here

确实有look ahead

我真正想做的是这个。我有: - hey:blah,{'some':'obj','another':[4,5,0]}

我想提取所有内容但不包括第一个:。 所以我的输出是: - blah,{'some':'obj','another':[4,5,0]}

到目前为止我的尝试: - (:.+) //gives :blah,{'some':'obj','another':[4,5,0]} - 请注意它有:
[^\w:].+ //gives ,{'some':'obj','another':[4,5,0]} - 不是我预期的结果。 blah遗失了。

我试图在纯正则表达式中尝试这样做并尝试避免循环或任何字符串操作。
到目前为止,我的尝试一直无济于事。

3 个答案:

答案 0 :(得分:4)

正则表达式

如果您不希望选择任何内容,可以将其包装成以下内容:

(?=:(.*))

如果你想要直到以下冒号:

(?=:([^:]*))

JavaScript代码

由于未选择任何内容,[0]将为空。访问[1]

/(?=:(.*))/.exec("hey:blah,{'some':'obj','another':[4,5,0]}")[1];
//                         Use [1] not [0]                       ^^

那说,有什么不妥之处:

var str = "hey:blah,{'some':'obj','another':[4,5,0]}";
str.substr(str.indexOf(':') + 1);

答案 1 :(得分:2)

^[^:]*:(.*$)

你可以试试这个。抓住第一组。看看演示。

https://regex101.com/r/vH0iN5/1

答案 2 :(得分:2)

您可以使用string.replace

string.replace(/^[^:]*:/, "");