Почему регулярное выражение не работает в ie?

Привет всем, у меня есть одно регулярное выражение, которое работает во всех браузерах, кроме IE. Я не знаю, почему, пожалуйста, помогите.

sep = 9999999999;
rgx = new RegExp('(\\d+)(\\d{'+sep+'})');

переменная sep имеет динамические номера. И в IE возникает ошибка SyntaxError: синтаксическая ошибка в регулярном выражении.

Вы пытались разобрать шаблон, чтобы точно определить место ошибки? Например, уменьшить sep до 1?

Justinas 06.03.2019 14:05

Просто для подтверждения - я воспроизвожу это в IE11 через new RegExp('(\\d+)(\\d{9999999999})');

VLAZ 06.03.2019 14:05

@VLAZ да, тот же шаблон, но sep динамический

user3458271 06.03.2019 14:07

@Justinas извините, я не понимаю, что вы говорите?

user3458271 06.03.2019 14:07

@user3458271 Вместо 9999999999 поставьте 1 или 12

Justinas 06.03.2019 14:11

Какие данные, содержащие более 10 миллиардов цифр, вы обрабатываете?

Toto 06.03.2019 15:59

Не могли бы вы сообщить нам, каковы шансы, что sep будет содержать 9999999999 это значение? Были ли у вас подобные проблемы с другими значениями? Я думаю, что это ограничение IE, но у меня нет документа, подтверждающего это.

Deepak-MSFT 07.03.2019 07:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
104
1

Ответы 1

Здесь рискну предположить, что, поскольку маловероятно, что механизм регулярных выражений действительно обработает строку длиной в десять миллиардов символов, числовые квантификаторы ограничены количеством цифр, которые они могут содержать.

Попробуйте на одну девятку меньше, пока не сработает.

А если серьезно, десять миллиардов цифр?

да, потому что он считает и ставит разделители и символы в числах.

user3458271 06.03.2019 14:12

Итак, я просчитался, и это 10 миллиардов, а не 10 триллионов, но даже в этом случае... для хранения такой строки потребуется 10 ГБ ОЗУ и гораздо больше для фактической обработки с помощью регулярных выражений.

Niet the Dark Absol 06.03.2019 14:14

я просто получаю числа от клиента, поэтому оперативная память не моя проблема, и даже она работает во всех других браузерах, а не только в IE

user3458271 06.03.2019 14:16

Если это поможет - сняв одну цифру из повторения, регулярное выражение скомпилируется правильно. По крайней мере на IE11 - остальные не проверял. Я согласен, что количество цифр кажется чрезмерным. Если вы пытаетесь извлечь такое длинное число из ввода, мне действительно интересно, как выглядит общий ввод, поскольку он будет составлять не менее 10 Гигаbytes. Мне трудно представить, что браузеры не задыхаются, пытаясь прочитать такое количество данных.

VLAZ 06.03.2019 14:21

да, удаление одной цифры помогло и сработало, но я должен проверить правильность, так как цифры не с моей стороны.

user3458271 06.03.2019 14:29

@user3458271 user3458271, вероятно, потому, что длина повторения атома хранится в 32-битном целом числе. Я предполагаю, что 2147483647 - это самое большое значение, которое вы можете использовать (по крайней мере, если синтаксический анализатор регулярных выражений IE имеет значение как в .NET)

Mathias R. Jessen 06.03.2019 14:32

Другие вопросы по теме