JavaScript正则表达式忽略大小写异常(无效组)

时间:2017-06-12 16:00:05

标签: javascript regex exception

我有以下正则表达式:

(?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

解决此问题的最佳解决方案是什么。 任何帮助,我将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

JavaScript regex引擎不支持内联修饰符组。您可以在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子字符串。