使用RegEx查找括在引号和等号中的字符串

问题描述 投票:0回答:1

我正在尝试使用JavaScript解析字符串。字符串用引号括起来,或者是单个=字符。

例子:

"String 1" "String 2" "String 3"
"String 1" = "String 3"
"String 1" "String 2" =
"String 1" = =

我发现以下RegEx模式仅涵盖了第一种情况 - 至少当我在RegExr上使用它时,它在JavaScript中不起作用:(["'])(?:(?=(\\?))\2.)*?\1

例:

const re = /(["'])(?:(?=(\\?))\2.)*?\1/;
const str = '"String 1" "String 2" "String 3"';

re.exec(str);

//=> [""String 1"", """, "", index: 0, input: ""String 1" "String 2" "String 3"", groups: undefined]

如何将此模式转换为在JavaScript中工作?如何将=添加到模式中?

javascript regex
1个回答
1
投票

假设你不关心转义的引号(例如"a\"b"),那么这个正则表达式将匹配引用的字符串或等号:"[^"]*"|'[^"]*'|=。你可以用它作为:

let input = `"String 1" "String 2" 'String 3' = = "string 4"`;

let matches = input.match(/"[^"]*"|'[^"]*'|=/g);
console.log(matches);

[
  "\"String 1\"",
  "\"String 2\"",
  "'String 3'",
  "=",
  "=",
  "\"string 4\""
]
© www.soinside.com 2019 - 2024. All rights reserved.