[英]Match a condition RegEx
我需要能夠刪除字符串中的條件,這里是:
(("${Operation}" == "Fixed") && ("-" == "-"))
我希望能夠將"${Operation}" == "Fixed"
替換為""
或其中包含$ {}的任何東西。 換句話說,如果條件左側有$ {},我想完全擺脫這個條件。
這將匹配它
\([^(]*\${.*?}[^)]*\)
一般來說 ,正則表達式不是正確的方法。 有許多案例都是有效的JavaScript語法,但這些案例並不適合正則表達式。 但是,這是一種方法:
var code = '(("${Operation}" == "Fixed") && (thing1 == thing2))';
code = code.replace(/"[^"]*\$\{[^}]*\}[^"]*"\s*==\s*"[^"]*"/, 'true');
那只處理雙引號。 如果需要處理兩種類型的引號,表達式將更復雜。 如果您需要處理兩種類型的引號並且您的字符串可能包含引號,那么正則表達式實際上不起作用。
如果你能想出一個不同的方法來解決這個問題,那么你應該這樣做。 例如 - 字符串來自哪里? 你能以不同的格式獲得數據嗎?
此外,聽起來您正在設置此字符串以調用eval
。 如果它包含任何類型的用戶輸入,這是一個壞主意。
有了這個正則表達式/ /^\\(?[^)&]*?\\${.*\\)/
我成功匹配了兩個第一行而不是另外兩個。 這是你想要的?
((“$ {Operation}”==“Fixed”)&&(“ - ”==“ - ”))
(“$ {Operation}”==“Fixed”))
((“$ Operation”==“Fixed”)&&(“ - ”==“ - ”))
((“ - ”==“ - ”)&&(“$ {Operation}”==“Fixed”))
有意思的是,我想出了/ /\\(("?\\${.*}"?[^)]*)\\)/g
:
'(("${Operation}" == "Fixed") && ("-" == "-"))'.replace(/\(("?\${.*}"?[^)]*)\)/g, '("")')
這可能有太多*
,但互聯網編碼問題似乎總是有點大開。
注意:這就像在特殊的RegExp角色中進行測試一樣,很有趣!
保持我寫的正則表達式下沉船唯一的事情是[^)]*
任何事情都不是結束)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.