我试图找到所有超过2个花括号块的字符串,即。 双引号之间的{{data1}} {{data2}}等2个动态值
例如:
class="xyz level1 {{disabled}} what is the {{contentStyle}} result"
我试过但没有运气
(。*?{{){1,}
答案 0 :(得分:1)
为什么不\{\{(\w+)?\}\}
?这将匹配胡子样式花括号内的文本。
答案 1 :(得分:1)
我认为你要求测试两个匹配项 - 尝试String.protoype.match并测试长度
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
application/graphql
答案 2 :(得分:1)
假设您实际上是指两个或更多花括号,您可以使用以下内容:
(({){2,})\S*((}){2,})/g
注意,如果你真的想要3个或更多花括号(超过2个,前{{{code}}}),你可以将上面例子中的2更改为3.
这可以捕获第一个组(({){2,})
,其中({)
与开放的大括号匹配,{2,}
捕获前两个或多个组。然后它允许任意数量的(*
)非空格(\S
)字符,并在遇到((}){2,})
时停止匹配,这与我所描述的相同开场序列,只改为}
。 \g
是全局标志,允许它匹配模式的多个实例,而不仅仅是第一个。
答案 3 :(得分:1)
使用此模式(\{\{[^}]+\}\})(?!(([^"]*"){2})*[^"]*$)
Demo
它只会按标题捕获双引号。
答案 4 :(得分:1)
这看起来有点毛茸茸但你可以使用以下正则表达式执行此操作:
let pattern = /([^{}]*\{\{[^{}]+\}\}[^{}]*){2,}/
一些例子:
pattern.test('') // false
pattern.test('{{a}}{{b}}') // true
pattern.test('{{a}}{{fdsa}fdsa}{{4{{3fdsafds42}}fdsafds') // false
答案 5 :(得分:1)
您可以检查匹配的长度,这将为您提供有关有多少2个花括号块的信息:
Dictionary
答案 6 :(得分:1)
一个简单的解决方案,假设你的大括号总是正确配对:
\w*(?=(\}){2,})