javascript - 用单引号捕获在三引号字符串中

标签 javascript regex

在 Javascript 中假设这个正则表达式:

/(?:"""([\s\S]*?)""")/g

我怎样才能做到,以便以下两个捕获都有效?

"""foo"""

捕捉:

foo

还有……

"""foo "bar baz""""

捕捉:

foo "bar baz"

?

注意: Atm 我不知道如何捕获第二个示例。

换句话说,我需要确保我要捕获的内容中的最终引号不会破坏三引号模式,即只匹配前三个三引号而不是最后三个。

最佳答案

您可以使用 negative lookahead assertion匹配子字符串中的最后一个 "

/"""([\s\S]*?)"""(?!")/g

var str = '"""foo""" """foo "bar baz""""';

var regex = /"""([\s\S]*?)"""(?!")/g;
var m;

while (m = regex.exec(str)) {
  console.log(m[1]);
}


Regex explanation here.

关于javascript - 用单引号捕获在三引号字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41845715/

相关文章:

javascript - 延迟加载 vs Combine/Minify vs CDN Javascript (AngularJS)

javascript - Jquery .click() 不工作多个按钮

java - XSL 替换字符串值中的两种类型的字符

第一个括号之间的 Javascript 正则表达式字符串,包括括号内

JavaScript(正则表达式): excluding matches from output

javascript - 按换行符拆分字符串,保留带引号的段

javascript - 正则表达式查找字符串结尾

javascript - IE11 使用 AngularJS 的 ng-repeat 渲染变慢/卡住

javascript - 导入 react-native-fetch-blob 时出现意外 token

javascript - D3.js:根据数据设置轴位置