首頁  >  文章  >  web前端  >  如何匹配帶引號的字串之外的正規表示式實例,即使帶有轉義引號?

如何匹配帶引號的字串之外的正規表示式實例,即使帶有轉義引號?

DDD
DDD原創
2024-10-28 00:02:01785瀏覽

How to Match Regex Instances Outside of Quoted Strings, Even with Escaped Quotes?

匹配引號之外的實例

與先前的假設相反,可以匹配給定正則表達式不在引號內的所有實例使用正規表示式的字串部分,甚至考慮轉義引號。

正規表示式解決方案

要實現此目的,請利用前瞻斷言來檢查每個單字是否是在引號之外,當其後有偶數個引號時會發生這種情況。下面的正規表示式捕捉了此模式:

\+(?=([^"]*"[^"]*")*[^"]*$)

處理轉義引號

要處理轉義引號,請修改表達式以忽略反斜線並前進到下一個未轉義引號:

\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)

這確保轉義引號不會被計算為左引號。

JavaScript 與.split() 和.replace() 的用法

為了與JavaScript 的.split() 和.replace() 方法一起使用,可以使用以下程式碼:

const input = '+bar+baz"not+or\"+or+\"this+\"foo+bar+';
const replaced = input.replace(/\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)/g, '#');
console.log(replaced); // "#bar#baz\"not+or\"+or+\"this+\"foo#bar#"

以上是如何匹配帶引號的字串之外的正規表示式實例,即使帶有轉義引號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn