我需要在引号中匹配字符串

I need match string in quotes

本文关键字:字符串      更新时间:2023-09-26

我需要匹配""内的字符串,我使用以下它不工作

var str='"hi" hello "abc'nddk" ef "gh"';
console.log(str.match(/(?=")[^"]*?(?=")/));

t的输出是

[]

我需要输出

["hi", "abc'nddk", "gh"]

更新:

我可以使用正则表达式"[^"]"来匹配引号中的字符串,但我需要避免"来自结果

最简单的方法是:

/"[^"]*?"/g

这将返回一个包含"hi", "abc'nddk""gh"的数组,您可以在单个块上执行类似piece.replace(/"/g, "")的操作以摆脱"。如果你不喜欢那就不要用match你可以用搜索,不要替换

var matches = [];
str.replace(/"([^"]*?)"/g, function (_, match) {
    matches.push(match);
});

这应该能奏效:

/(?| (")((?:''"|[^"])+)'1 | (')((?:'''|[^'])+)'1 )/xg

演示

BTW: regex101.com是一个很好的资源使用(这是我得到上面的正则表达式的地方)

更新

第一个是PHP的,下面是JS的

/"([^"'']*(?:''.[^"'']*)*)"|'w+|'([^''']*(?:''.[^''']*)*)'/g

也许我看错了你的问题,但这对我来说是有效的

/'".+'"/gm

https://regex101.com/r/wF0yN4/1