我有两个字符串,我需要拉出双引号之间的字符。问题是,我想分组抓住它们。
var str = 'FF\"J"A4"L"';
var results = str.match(/\"(.*)\"/);
这将返回第一个和最后一个双引号之间的所有内容。在这种情况下,它返回 J" A4" L 但我需要它返回的是 J 和 L 。
引号之间的内容几乎是任何unicode字符,如字母和数字,包括} , = 和 @ 。
有关如何使用正则表达式完成此操作的任何想法?
答案 0 :(得分:1)
你正在寻找的是/g
"全球旗帜":
/("[^"]*")/g
在您的示例中,它是这样的:
var str = 'FF\"J"A4"L"';
var results = str.match(/("[^"]*")/g);
执行此操作时,results
将为[""J"", ""L""]
,其中包含整个匹配(这就是为什么有额外的引号)。
如果你只想要匹配的组(只返回组,而不是整个匹配区域),你可以使用exec
:
var str = 'FF\"J"A4"L"';
var results = []
var r = /("[^"]*")/g
match = r.exec(str);
while (match != null) {
results.push(match[1])
match = r.exec(str);
}
现在,结果为["J", "L"]
答案 1 :(得分:1)
听起来引号之间的内容是除引号之外的任何字符,在这种情况下你可以逃脱
/"([^"]*)"/