我有一個以下格式的字串:
aaa!bbb.200
where
aaa可以是任何東西(任何長度)bbb可以是任何東西(任何長度),除了!!&.200是可選的(可以是任何 3 位數字)
我想捕捉bbb和200
例如:
aaaaa!bbbb.200我想捕捉bbbb&200aaa.400我想捕捉400aaa!bb我想捕捉bb
我已經能夠使用以下正則運算式來做到這一點,(?:.*!(.*)\.(\d{3}$)|.*!(.*)|.*\.(\d{3}$))
但它使用|這會使捕獲組復雜化,而且對于我需要的東西來說似乎太長了
試圖最后捕獲除可選之外的所有字串,最終在檢查可選之前消耗所有字串。
uj5u.com熱心網友回復:
您可以使用
^.*?(?:!([^!]*?))?(?:\.(\d{3}))?$
請參閱正則運算式演示。詳情:
^- 字串的開始.*?- 盡可能少的零個或多個除換行符以外的字符(?:!([^!]*?))?- 一個可選序列,匹配一個或零個字符,然后盡可能少地匹配!除字符之外的任何零個或多個字符,捕獲到組 1!(?:\.(\d{3}))?- 一個可選序列,匹配一個或零個.字符,然后是任何三個數字,捕獲到第 2 組$- 字串結束。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/457434.html
標籤:javascript 正则表达式
