javascript - 正则表达式认为我正在嵌套,但我没有

标签 javascript regex

我编写了这个正则表达式来捕获下面的字符串。

\!\[(.*?)?\]

下面的所有字符串都应匹配并返回第一组方括号内的可选字符串。

![]
![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/

相关文章:

javascript - 从输入字段获取值并将其用作函数中的参数

javascript - Node.Js 使用 .filter 方法从数组中删除一项

javascript - 在 AWS Lambda 上“找不到模块 fluence-ffmpeg”

regex - 替换GO中以 "#"开头的特定新行

Python 字符串正则表达式中的大小写标准

用于邮政信箱验证的 Java 正则表达式

javascript - 如何在ajax post中接收ajax回调

javascript - 在 HTML 表头中添加类似 excel 的元素列表

asp.net - 末尾接受多次 (.com) 的电子邮件 ID

javascript - 如何获取包含所有重音字母、数字但不含 ".,;"和其他标点符号的主题标签