尝试匹配字符串,包括字符串中的引号

时间:2018-05-07 03:45:48

标签: javascript regex string double-quotes

我试图将以下正则表达式传递给javascript,但我无法通过它。我整个下午试图成功地将它用于我的项目,但遗憾的是我无法找到实现这项工作的方法。这是正则表达式的链接:https://regex101.com/r/lF0fI1/272

正则表达式: ((?<![\\])['"])((?:.(?!(?<![\\])\1))*.?)\1

测试字符串:[1, "c", "[\"asd\" , 2]"]

我想要获得的是获得给定字符串的外部引号。

正则表达式取自这里:https://www.metaltoad.com/blog/regex-quoted-string-escapable-quotes

1 个答案:

答案 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}`);
    });
}

https://regex101.com/r/ylGzh4/2