[英]Regex to find more than 2 curly braces inside double quotes text
我正在尝试查找所有具有超过2个花括号块的字符串,即双引号之间的2个动态值,例如{{data1}} {{data2}}
例如:
class="xyz level1 {{disabled}} what is the {{contentStyle}} result"
我尝试过但没有运气
(。*?{{){1,}
为什么不\\{\\{(\\w+)?\\}\\}
? 这将与胡子样式花括号内的文本匹配。
我认为您要测试两个匹配项-尝试String.protoype.match并针对长度进行测试
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/match
function x(str) {
return str.match(/\{\{(\w+)?\}\}/g).length > 1
}
假设您实际上是指两个或多个花括号,则可以使用以下代码:
(({){2,})\\S*((}){2,})/g
请注意,如果您实际上想要3个或更多的花括号(超过2个,例如{{{{code}}}),则只需将上面示例中的2s更改为3。
这是通过捕获第一个组(({){2,})
,其中({)
与大括号匹配,而{2,}
捕获前一组的两个或多个。 然后,它允许任意数量的( *
)非空格字符( \\S
)字符,并在遇到((}){2,})
时停止匹配,这与我在开头序列中所描述的相同,只能使用}
。 \\g
是全局标志,允许它匹配模式的多个实例,而不仅仅是第一个。
使用此模式(\\{\\{[^}]+\\}\\})(?!(([^"]*"){2})*[^"]*$)
演示
它只会按标题在双引号内引起来。
这看起来有点毛茸茸,但是您可以使用以下正则表达式进行此操作:
let pattern = /([^{}]*\{\{[^{}]+\}\}[^{}]*){2,}/
一些例子:
pattern.test('') // false
pattern.test('{{a}}{{b}}') // true
pattern.test('{{a}}{{fdsa}fdsa}{{4{{3fdsafds42}}fdsafds') // false
您可以检查比赛的长度,这将为您提供有关有多少个2个花括号块的信息:
var p = /(\{\{.+?\}\})/g;
var str = "xyz level1 {{disabled}} what is the {{contentStyle}} result {{what}} is the";
var res = str.match(p); /* here res will either null or an array */
if(res && res.length > 2){
console.log("yes");
}
一个简单的解决方案,假设您的牙套始终正确配对:
\w*(?=(\}){2,})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.