正则表达式匹配字符串直到不需要的部分

时间:2014-08-28 16:41:39

标签: jquery regex string

我有这样的字符串;

[0]: http//www.somelink.com[Some Text][0]

[Some Text][0]是可选的。它可以在那里。

我希望匹配[0]: http//www.somelink.com,将0更改为1

为此我使用了这段代码; string.replace(/(\[)\d+(\]:.+)(\[.*?\]\[\d+\])?/, "$11$2");

但我猜是因为(\[.*?\]\[\d+\])?是可选的,+会消耗所有字符,即使有[某些文字] [0]或不是

我也试过string.replace(/(\[)\d+(\]:[^\\[]+)(\[.*?\]\[\d+\])?/, "$11$2");这有效但是如果有[之前[Some Text] [0] +停止匹配

我也试过这个string.replace(/(\[)\d+(\]:.+)(?!\[.*?\]\[\d+\])/, "$11$2");,但再次+消耗所有内容

有没有办法匹配每个角色,包括[,直到[Some Text][0]?

1 个答案:

答案 0 :(得分:0)

   \[\d+\]:\s*http.*?(?=(\[.*?\]\[\d+\])|$)

这两者都匹配。

参见演示。

http://regex101.com/r/lK9iD2/5