我有以下正则表达式:
(?i:(?:(?:(?:fbx|fo))\d+)|(?:(09|0[1-5])\s?(?:\d{2}\s?){4})(?:(@freeadsl)?))
我在https://regex101.com/中测试了表达式并且它有效。
在进行搜索后,结果发现问题是javascript不接受正则表达式忽略大小写?i
。
解决此问题的最佳解决方案是什么。 任何帮助,我将不胜感激,谢谢!
答案 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+
- 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
子字符串。