Node.js · Senior · Запитання 11 з 75
Що зазвичай змушує повільний регулярний вираз блокувати Node.js-сервер (ReDoS)?
/^(a+)+$/.test("aaaaaaaaaaaaaaaaaaaaaaaaaaaa!");- 1Регулярні вирази завжди виконуються в пулі потоків і вичерпують його
- 2Метод
testзастарів - ✓Правильна відповідь: Вкладені квантифікатори спричиняють катастрофічний бектрекінг, і на певних даних збіг шукається експоненційно довго
Пояснення
Регулярний вираз виконується в головному потоці, тож один запит може заморозити весь сервер. Уникайте вкладених квантифікаторів, обмежуйте довжину даних або беріть рушій із лінійним часом, як-от RE2.