我写了这个正则表达式来捕获下面的字符串。
\!\[(.*?)?\]
下面的所有字符串应匹配并返回在第一组方括号内的可选字符串。
![]
![caption]
![]()
![caption]()
![caption][]
问题在于该字符串也匹配并返回
][
,因为正则表达式认为它在第一个[
和最后一个]
之间。![][] // Should not match, but does and returns "]["
我该如何解决?
最佳答案
只需删除?
之外的(.*?)
,那是多余的。
var myArray = ["![abc]","![caption]", "![def]()", "![caption]()","![caption][]"];
myArray.forEach(function(current) {
console.log(/!\[(.*?)\]/.exec(current)[1]);
});
输出量
abc
caption
def
caption
caption
检查RegEx的工作方式here
关于javascript - 正则表达式认为我在嵌套,但我不是,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20920296/