2017-06-12 286 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。仅供参考,我从后端得到正则表达式,我无法改变它,但是我发现你的正则表达式更好,我将讨论它到后端开发。感谢您的帮助 –