簡體   English   中英

大括號正則表達式之間的匹配點

[英]Match dot between braces regex

匹配左大括號('{{')和右大括號('}}')之間的所有點的正則表達式是什么?

IE 下面字符串中“Journey”和“Data”之間以及“Client”和“FirstName”之間的點。

"{{Journey.Data::Client::Client.FirstName}}"

適用於任何瀏覽器的解決方案是正則表達式替換為{{[\w\W]*?}}模式和回調 function 用作替換參數以替換匹配的 substring 中所有出現的點:

 console.log( "AA {{Journey.Data::Client::Client.FirstName}} ZZ".replace(/{{[\w\W]*?}}/g, (x) => x.replace(/\./g, '')) )

在這里, /{{[\w\W]*?}}/g匹配所有出現的以{{開頭的子字符串,然后是盡可能少的零個或多個字符,然后是}} ,然后是(x) => x.replace(/\./g, '')箭頭 function 刪除所有. 字符(與/\./g匹配)。

如果您使用的是最新的 ECMAScript 2018+ 兼容的正則表達式風格,如果您匹配{{}}之間的任何點,則可以使用純字符串替換模式:

 console.log( "AA {{Journey.Data::Client::Client.FirstName}} ZZ".replace( /(?<={{(?:(?.{{|}}).)*)\?(?=(:?(.,{{|}}).)*}})/gs, '') )

詳情

  • (?<={{(?:(?.{{|}}).)*) - 前面緊跟的位置
    • {{ - 一個{{字符串
    • (?:(?.{{|}}).)* - 單個字符,零次或多次出現但盡可能多,不開始{{}}字符序列
  • \. - 一個點
  • (?=(?:(?.{{|}}).)*}}) - 緊隨其后的位置
    • (?:(?.{{|}}).)* - 單個字符,零次或多次出現但盡可能多,不開始{{}}字符序列
    • }} - 一個}}字符串。

由於s標志, . 匹配所有字符,包括換行符。

您可以使用以下內容:

\{\{.*?(\.).*?\}\}

解釋: { 匹配 { 字符。 匹配。 char () 對點進行分組,以便您可以捕獲它。*? 確保你可以在點之前和之后有 thigs

工作示例: https://regex101.com/r/hbHmX2/1

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM