2017-06-12 55 views
1

我有以下的正則表達式:JavaScript正則表達式忽略大小寫(無效組)

(?i:(?:(?:(?:fbx|fo))\d+)|(?:(09|0[1-5])\s?(?:\d{2}\s?){4})(?:(@freeadsl)?)) 

https://regex101.com/測試的表現和它的作品。

enter image description here

但在JavaScript中,忽略了最低的工作。 enter image description here

經過搜索,原來問題是,JavaScript不接受正則表達式忽略案例?i

解決此問題的最佳解決方案是什麼? 任何幫助,我會感激,謝謝!

+0

JS正則表達式不支持內聯修飾符。 –

回答

1

JavaScript正則表達式引擎不支持內聯修飾符組。您可以在JS正則表達式使用i修改和刪除不必要的非捕獲組,以減少你的正則表達式來

var rx = /(?:fbx|fo)\d+|(?:09|0[1-5])\s?(?:\d{2}\s?){4}(?:@freeadsl)?/i; 
                    ^

regex demo。最後的/i使模式中的字母匹配大小寫字母。

詳細

  • (?:fbx|fo)\d+ - fbxfo子,隨後用1+位數
  • | - 或
  • (?:09|0[1-5]) - 09子或0隨後與15數字。
  • \s? - 任選的(1或0)的空格
  • (?:\d{2}\s?){4} - 4發生的:
    • \d{2} - 2位數字
    • \s? - 任選的(1或0)的空格
  • (?:@freeadsl)? - 一個可選的@freeadsl子字符串。
+0

良好的通話清潔。現在可讀性更強;) – Thomas

+1

感謝您的回覆@Wiktor。僅供參考,我從後端得到正則表達式,我無法改變它,但是我發現你的正則表達式更好,我將討論它到後端開發。感謝您的幫助 –