正则表达式在双引号文本中找到2个以上的花括号

时间:2017-08-08 23:58:38

标签: javascript html regex

我试图找到所有超过2个花括号块的字符串,即。  双引号之间的{{data1}} {{data2}}等2个动态值

例如:

class="xyz level1 {{disabled}} what is the {{contentStyle}} result" 

我试过但没有运气

(。*?{{){1,}

7 个答案:

答案 0 :(得分:1)

为什么不\{\{(\w+)?\}\}?这将匹配胡子样式花括号内的文本。

regexer

答案 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,})