Здравствуйте! В этом уроке рассмотрим так называемые «медленные» регулярные выражения. Все дело в том, что некоторые регулярные выражения, простые с виду, могут выполняться довольно долго, и даже «подвешивать» интерпретатор JavaScript.
Рано или поздно с этим сталкивается любой разработчик, потому что нечаянно создать такое регулярное выражение – очень просто.
Типичный симптом: регулярное выражение обычно работает нормально, но иногда, с некоторыми строками, «подвешивает» интерпретатор и потребляет 100% ресурсов процессора.
Как правило, веб-браузер при этом предлагает «убить» скрипт и перезагрузить зависшую страницу. Явно нехорошая ситуация.
Ну а для серверного JavaScript это может стать очень серьёзной уязвимостью, если регулярные выражения используются для обработки пользовательских данных. Читать далее