最后一个字符串与正则表达式不匹配

问题描述:

我需要som正则表达式帮助。我有这个代码,我想匹配。最后一个字符串与正则表达式不匹配

var i1 = "<ul> {{#items}}<li>{{.}}</li>{{/items}} </ul>"; 
var i2 = "<ul> {{#items}}<li>{{.}}</li> <li><ul> {{#items}}<li>{{.}}</li>{{/items}} </ul></li>{{/items}} </ul>"; 
var i3 = "<ul> {{#items}}<li>{{.}}</li>{{/items}} </ul> <ul> {{#items}}<li>{{.}}</li>{{/items}} </ul>"; 


var reg = /{{(?:(?:#|!#)([\s\w\.-]+))}}+(.+(?:{{\/.+}}))/ 

i1 => ["{{#items}}<li>{{.}}</li>{{/items}}", "items", "<li>{{.}}</li>"] 
i2 => ["{{#items}}<li>{{.}}</li> <li><ul> {{#items}}<li>{{.}}</li>{{/items}} </ul></li>{{/items}}", "items", "<li>{{.}}</li> <li><ul> {{#items}}<li>{{.}}</li>{{/items}} </ul></li>"] 
i3 => ["{{#items}}<li>{{.}}</li>{{/items}} </ul> <ul> {{#items}}<li>{{.}}</li>{{/items}}", "items", "<li>{{.}}</li>{{/items}} </ul> <ul> {{#items}}<li>{{.}}</li>"] 

最后一个不符合我想要的。我只是希望它匹配第一个ul#项目,并在第一个{{/ items}}到来时停止。前两个注册表没有html标签。

我需要一些帮助来弄清楚如何做最后一个。

谢谢

您的模式是贪婪的,这意味着它将匹配最大的可能字符串。使用.*?.+?而不是.*.+。有关“贪婪”和“懒惰”操作符之间区别的更详细解释,请查阅here

+0

谢谢,应该看看那个。 – user355510 2011-05-01 18:12:09