假设我的数据如下
Hello { "I have {g{t{" braces { between "{" { quotes{ "{{"
如何匹配仅在引号之间的{符号?我试图仅在引号之间提取指定字符的出现次数。有任何想法吗?样本应匹配6个大括号
答案 0 :(得分:6)
var nb = str.split('"').filter(function(_,i){return i%2}).join('')
.split('{').length - 1;
答案 1 :(得分:0)
s
是你的字符串
s.match(/"(.+?)"/g).reduce(function(p,c) {return p + (c.match(/{/g)||[]).length;}, 0);
由于有些人发现正则表达式令人生畏,我认为这可能有助于逐步了解其工作原理。 :)
/"(.+?)"/g
为您提供原始字符串中所有引用字符串的数组。
/
和/
是正则表达式,因为引号是字符串。 g
表明这是一个全局搜索 - 我们想要所有引用的字符串,而不仅仅是第一个字符串。"
表示要匹配的字符串.
表示任何字符+?
是一个成语,表示正则表达式中下一个字符的所有内容;换句话说,非贪婪的匹配。如果我们在这里使用*
而不是+?
,我们会在第一个和最后一个"
之间找到一个大引号字符串,其中包含所有其他"
!/{/g
计算您的{
个字符。通过使用||[]
,我们确保即使找不到大括号字符也会得到0
的返回值。reduce
,我们提供初始值0
。