У меня есть следующее регулярное выражение:
(?i:(?:(?:(?:fbx|fo))\d+)|(?:(09|0[1-5])\s?(?:\d{2}\s?){4})(?:(@freeadsl)?))
Я тестировал выражение в https://regex101.com/, и он работает.
Но в javascript он не работает.
После выполнения поиска выяснилось, что проблема в том, что javascript не принимает событие regex ignore ?i
Какое лучшее решение для устранения этой проблемы. Любая помощь, я буду признателен, спасибо!
JavaScript regex engine не поддерживает встроенные группы модификаторов. Вы можете использовать модификатор i
в регулярном выражении JS и удалить ненужные группы без захвата, чтобы уменьшить ваше регулярное выражение до
var rx = /(?:fbx|fo)\d+|(?:09|0[1-5])\s?(?:\d{2}\s?){4}(?:@freeadsl)?/i;
^
См. Демо-версию regex. /i
в конце делает буквы в шаблоне совпадающими как с lower-, так и с прописными буквами.
Детали:
(?:fbx|fo)\d+
- fbx
или fo
substring, за которыми следуют цифры 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
.