Javascript 如何只抓住什么';在下面的正则表达式中,引号之间是?

Javascript 如何只抓住什么';在下面的正则表达式中,引号之间是?,javascript,regex,Javascript,Regex,以下正则表达式与引号内的子字符串匹配: ^("[^"]*")$ “对话,”她说。“更多对话。” 我不想抓住引号(只想抓住引号内的内容)。所以我想我应该使用“向前看”和“向后看”: ^((?<=")[^"]*(?="))$ ^((?您得到的匹配太多,因为断言与“不匹配,所以两个双引号之间的任何内容都是匹配的 您可以在左侧断言一个“,然后在右侧断言一个”,然后是可选的“对,直到字符串结束 假设双引号之间没有转义双引号 (?<

以下正则表达式与引号内的子字符串匹配:

^("[^"]*")$
“对话,”她说。“更多对话。”

我不想抓住引号(只想抓住引号内的内容)。所以我想我应该使用“向前看”和“向后看”:

^((?<=")[^"]*(?="))$

^((?您得到的匹配太多,因为断言与
不匹配,所以两个双引号之间的任何内容都是匹配的

您可以在左侧断言一个
,然后在右侧断言一个
,然后是可选的
对,直到字符串结束

假设双引号之间没有转义双引号

 (?<=")[^"]*(?="(?:[^"]*"[^"]*")*[^"]*$)
(?亲吻
问题中的正则表达式过于具体(分解):

这将只匹配表单的字符串:

"some string"
anything "some string"   (does not start with a quote
"some string" anything   (does not end with a quote)
例如,它不会匹配以下表单的字符串:

"some string"
anything "some string"   (does not start with a quote
"some string" anything   (does not end with a quote)
因此,如果目标是捕获带引号的字符串,那么就不要在捕获组中包含引号:

"([^"]*)"
然后引用捕获组,而不是整个匹配字符串

应用于Javascript 考虑以下代码:

input = '"one" something "two" something "three" etc.';
regex = /"([^"]*)"/;
match = input.match(regex);

匹配包含:
[“\'one\”,“one”]
-0项是完整的匹配字符串,1项是第一个捕获组。根据相关情况调整js代码。

您可以删除锚和捕获组
(?@Thefourthbird这种方法很有效……但是现在她说的
也被捕获了。对于示例字符串,我只看到
对话的匹配,
看到@Thefourthbird,当后面有另一个引号时,会发生这种情况:然后你可以使用
(?哇,太长了。但是它成功了。@alexchenco我想如果你想在双引号之间允许转义的
\“
,时间会更长。我想你是对的。我正在做
。替换
,所以我想我可以写
”。。。“
如果我想保留引号,请在replace参数中。呃,好的,因此这是一个x/y问题。请始终询问您想做什么,而不是您当前试图如何解决它(:)。