簡體   English   中英

JS正則表達式匹配零個或多個可選的以關鍵字開頭

[英]JS regex match zero or more optional start with key words

給定像keydown.capture.once.prevent.shift.control[arrowdown,arrowup]:silent這樣的字符串我想匹配shift.control[arrowdown,arrowup]:silent

如果相同的keydown.capture.once.prevent.shift[arrowdown,arrowup]:silent那么它應該匹配shift[arrowdown,arrowup]:silent

這里的關鍵字shift | 控件是可選的,例如: keydown.capture.once.prevent.[arrowdown,arrowup]:silent ,匹配字符串[arrowdown,arrowup]:silen

我寫了下面的正則表達式,它只能捕獲零個或一個關鍵字,但預期結果是零個或所有關鍵字匹配到單獨的組

(shift|control)?\[(.*?)\]:silent ,如果它們存在,我們如何捕獲所有關鍵字?

附加說明:關鍵字的順序無關緊要,例如可以是control.shift[]:silent

您可以使用以下任何一種正則表達式解決方案:

(?:(?:shift|control)\.?)*\[([^\]]*)\]:silent

這匹配shift或 control` 可選地后跟一個 dit 並重復這個非捕獲組 0 次或更多次。

正則表達式演示

(?:shift(?:\.control)?|control(?:\.shift)?)?\[([^\]]*)\]:silent

這個匹配shift.control OR control.shift在一個可選的非捕獲組中,在每個交替中點后面的部分都是可選的。

正則表達式演示 2

你可以試試這個:

(?:(shift|control|shift\.control|control\.shift))?(\[.*\]):silent

測試和output: https://regex101.com/r/rMSd2l/1

暫無
暫無

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

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