JavaScript正则表达式忽略大小写(无效组)
问题描述:
我有以下的正则表达式: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
子字符串。
+0
良好的通话清洁。现在可读性更强;) – Thomas
+1
感谢您的回复@Wiktor。仅供参考,我从后端得到正则表达式,我无法改变它,但是我发现你的正则表达式更好,我将讨论它到后端开发。感谢您的帮助 –
JS正则表达式不支持内联修饰符。 –