我试图将以下正则表达式传递给javascript,但我无法通过它。我整个下午试图成功地将它用于我的项目,但遗憾的是我无法找到实现这项工作的方法。这是正则表达式的链接:https://regex101.com/r/lF0fI1/272
正则表达式:
((?<![\\])['"])((?:.(?!(?<![\\])\1))*.?)\1
测试字符串:[1, "c", "[\"asd\" , 2]"]
我想要获得的是获得给定字符串的外部引号。
正则表达式取自这里:https://www.metaltoad.com/blog/regex-quoted-string-escapable-quotes
答案 0 :(得分:0)
如果您只需要转义双引号,则可以使用此JavaScript兼容模式:
"(?:[^"\\]|\\.)*"
根据需要匹配您的示例字符串。单引号被忽略。
代码示例:
const regex = /"(?:[^"\\]|\\.)*"/g;
const str = `[1, "c", "[\\"asd\\" , 2]", "['fgh' , 3]"]`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}