[英]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.