我编写了这个正则表达式来捕获下面的字符串。
\!\[(.*?)?\]
下面的所有字符串都应匹配并返回第一组方括号内的可选字符串。
![]
![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
检查正则表达式如何工作 here
关于javascript - 正则表达式认为我正在嵌套,但我没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20920296/