2017-06-12 37 views
-2

我有以下的JavaScript:正則表達式單雙爲例行情

let strTest = ` 
    "The issue": "L'oggetto ", 
    "issue": "oggetto", 
    "issue": 'oggetto "novo" ', 
    `; 

我試圖來標記類似上面的字符串。

我的正則表達式的嘗試:

let regExp = /["'](.*?)["']\s*?:\s*?['"](.*?)["']/gm; 

這工作正常,但在那裏我有一對單引號(')雙引號(「)或反之亦然內的情況下

這是可能的只有一個正則表達式

+2

* *不,不是用JavaScript的正則表達式。您需要更復雜的解析器來正確處理它。 –

+0

所以它看起來只能在一個單一的正則表達式中作爲拉斐爾肯尼迪狀態;) – Boogie

+0

@ user:不,它不能,不正確。 –

回答

0

我的回答是我自己,我想我有一個較小的正則表達式來了:「難道是有可能做到這一點的只有一個正則表達式一句」

` /["'](.*)["']\s*?:\s*?["'[](.*)["']]/g ` 

看一看regex101.com/r/g9WCbi/1

0

您可以使用反向引用:

/(["'])(.*?)\1\s*?:\s*?(['"])(.*?)\3/gm 

這將在標記字符串中包含引號,但是您可以通過僅採用偶數標記將它們從生成的匹配中刪除。

編輯: 作爲@TJ克勞德指出,這將無法正常如果字符串包含在字符串中\"形式轉義引號工作。爲了完全適應那些逃脫的報價,而不是像\\"絃斷(轉義反斜槓報價之前),您將需要使用多個正則表達式解析或採取不同的戰術

你可能想看看其他的事情,如果這是來自JSON,則忽略正則表達式,然後遍歷json對象的屬性。這取決於你得到的字符串是否作爲有效的json進入。

+0

這正是我需要的:)謝謝Rafael Kennedy – Boogie

+1

@ user2521616:請注意,這不能正確處理轉義引號:https://jsfiddle.net/bkkcyy8L/這就是爲什麼它不能在一個正則表達式中完成與JavaScript的正則表達式引擎。如果您嘗試處理轉義引號,則可以達到它似乎能夠工作的程度,然後在報價之前在轉義反斜槓上失敗。等等 –

+0

夠公平的。這取決於如何在該特定情況下產生該字符串,但這是一個很好的觀點。 –