我需要引号中的匹配字符串
I need match string in quotes
我需要匹配 ""
中的字符串,我正在使用它不工作
var str='"hi" hello "abc\nddk" ef "gh"';
console.log(str.match(/(?=")[^"]*?(?=")/));
t 给我的输出是
[]
我需要输出为
["hi", "abc\nddk", "gh"]
更新:
我可以使用正则表达式 "[^"]"
来匹配引号中的字符串,但我需要避免结果
中的 "
这应该可以解决问题:
/(?| (")((?:\"|[^"])+) | (')((?:\'|[^'])+) )/xg
Demo
顺便说一句:regex101.com 是一个很好的资源(这是我得到上面的正则表达式的地方)
更新
我发布的第一个作品适用于 PHP,here is one 适用于 JS
/"([^"\]*(?:\.[^"\]*)*)"|\w+|'([^'\]*(?:\.[^'\]*)*)'/g
也许我没看懂你的问题,但这对我有用
/\".+\"/gm
最简单的方法是:
/"[^"]*?"/g
这将 return 一个包含 "hi"
、"abc\nddk"
和 "gh"
的数组,您可以对单个部分执行类似 piece.replace(/"/g, "")
的操作以摆脱"
。如果你不喜欢那样,那么你可以做 search and don't replace
而不是 match
var matches = [];
str.replace(/"([^"]*?)"/g, function (_, match) {
matches.push(match);
});
我需要匹配 ""
中的字符串,我正在使用它不工作
var str='"hi" hello "abc\nddk" ef "gh"';
console.log(str.match(/(?=")[^"]*?(?=")/));
t 给我的输出是
[]
我需要输出为
["hi", "abc\nddk", "gh"]
更新:
我可以使用正则表达式 "[^"]"
来匹配引号中的字符串,但我需要避免结果
"
这应该可以解决问题:
/(?| (")((?:\"|[^"])+) | (')((?:\'|[^'])+) )/xg
Demo
顺便说一句:regex101.com 是一个很好的资源(这是我得到上面的正则表达式的地方)
更新
我发布的第一个作品适用于 PHP,here is one 适用于 JS
/"([^"\]*(?:\.[^"\]*)*)"|\w+|'([^'\]*(?:\.[^'\]*)*)'/g
也许我没看懂你的问题,但这对我有用
/\".+\"/gm
最简单的方法是:
/"[^"]*?"/g
这将 return 一个包含 "hi"
、"abc\nddk"
和 "gh"
的数组,您可以对单个部分执行类似 piece.replace(/"/g, "")
的操作以摆脱"
。如果你不喜欢那样,那么你可以做 search and don't replace
match
var matches = [];
str.replace(/"([^"]*?)"/g, function (_, match) {
matches.push(match);
});