我有以下的正則表達式:JavaScript正則表達式忽略大小寫(無效組)
(?i:(?:(?:(?:fbx|fo))\d+)|(?:(09|0[1-5])\s?(?:\d{2}\s?){4})(?:(@freeadsl)?))
我https://regex101.com/測試的表現和它的作品。
經過搜索,原來問題是,JavaScript不接受正則表達式忽略案例?i
。
解決此問題的最佳解決方案是什麼? 任何幫助,我會感激,謝謝!
我有以下的正則表達式:JavaScript正則表達式忽略大小寫(無效組)
(?i:(?:(?:(?:fbx|fo))\d+)|(?:(09|0[1-5])\s?(?:\d{2}\s?){4})(?:(@freeadsl)?))
我https://regex101.com/測試的表現和它的作品。
經過搜索,原來問題是,JavaScript不接受正則表達式忽略案例?i
。
解決此問題的最佳解決方案是什麼? 任何幫助,我會感激,謝謝!
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+
- fbx
或fo
子,隨後用1+位數|
- 或(?:09|0[1-5])
- 09
子或0
隨後與1
到5
數字。\s?
- 任選的(1或0)的空格(?:\d{2}\s?){4}
- 4發生的:
\d{2}
- 2位數字\s?
- 任選的(1或0)的空格(?:@freeadsl)?
- 一個可選的@freeadsl
子字符串。良好的通話清潔。現在可讀性更強;) – Thomas
感謝您的回覆@Wiktor。僅供參考,我從後端得到正則表達式,我無法改變它,但是我發現你的正則表達式更好,我將討論它到後端開發。感謝您的幫助 –
JS正則表達式不支持內聯修飾符。 –