Привет всем, у меня есть одно регулярное выражение, которое работает во всех браузерах, кроме IE. Я не знаю, почему, пожалуйста, помогите.
sep = 9999999999;
rgx = new RegExp('(\\d+)(\\d{'+sep+'})');переменная sep имеет динамические номера. И в IE возникает ошибка SyntaxError: синтаксическая ошибка в регулярном выражении.
Просто для подтверждения - я воспроизвожу это в IE11 через new RegExp('(\\d+)(\\d{9999999999})');
@VLAZ да, тот же шаблон, но sep динамический
@Justinas извините, я не понимаю, что вы говорите?
@user3458271 Вместо 9999999999 поставьте 1 или 12
Какие данные, содержащие более 10 миллиардов цифр, вы обрабатываете?
Не могли бы вы сообщить нам, каковы шансы, что sep будет содержать 9999999999 это значение? Были ли у вас подобные проблемы с другими значениями? Я думаю, что это ограничение IE, но у меня нет документа, подтверждающего это.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Здесь рискну предположить, что, поскольку маловероятно, что механизм регулярных выражений действительно обработает строку длиной в десять миллиардов символов, числовые квантификаторы ограничены количеством цифр, которые они могут содержать.
Попробуйте на одну девятку меньше, пока не сработает.
А если серьезно, десять миллиардов цифр?
да, потому что он считает и ставит разделители и символы в числах.
Итак, я просчитался, и это 10 миллиардов, а не 10 триллионов, но даже в этом случае... для хранения такой строки потребуется 10 ГБ ОЗУ и гораздо больше для фактической обработки с помощью регулярных выражений.
я просто получаю числа от клиента, поэтому оперативная память не моя проблема, и даже она работает во всех других браузерах, а не только в IE
Если это поможет - сняв одну цифру из повторения, регулярное выражение скомпилируется правильно. По крайней мере на IE11 - остальные не проверял. Я согласен, что количество цифр кажется чрезмерным. Если вы пытаетесь извлечь такое длинное число из ввода, мне действительно интересно, как выглядит общий ввод, поскольку он будет составлять не менее 10 Гигаbytes. Мне трудно представить, что браузеры не задыхаются, пытаясь прочитать такое количество данных.
да, удаление одной цифры помогло и сработало, но я должен проверить правильность, так как цифры не с моей стороны.
@user3458271 user3458271, вероятно, потому, что длина повторения атома хранится в 32-битном целом числе. Я предполагаю, что 2147483647 - это самое большое значение, которое вы можете использовать (по крайней мере, если синтаксический анализатор регулярных выражений IE имеет значение как в .NET)
Вы пытались разобрать шаблон, чтобы точно определить место ошибки? Например, уменьшить
sepдо1?