«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему тестирование JavaScript RegEx терпит неудачу?

Почему тестирование JavaScript RegEx терпит неудачу?

Опубликовано 10 ноября 2024 г.
Просматривать:116

Why Does JavaScript RegEx Testing Fail?

Провал тестирования регулярных выражений JavaScript: расшифровка проблемы

В области JavaScript разработчик столкнулся с загадочной дилеммой: их шаблон регулярных выражений согласован дал ложные результаты для любого ввода. Когда они поделились своим кодом с онлайн-редакторами, он на удивление заработал так, как задумано. Более тщательное изучение выявило причину: неправильную обработку обратной косой черты.

Изначально разработчик определил регулярное выражение как строку:

var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");

Однако при построении регулярного выражения из строки крайне важно удвоить каждый символ обратной косой черты. Это связано с тем, что синтаксический анализатор интерпретирует строковый литерал и применяет свои собственные правила для обратной косой черты, в результате чего получается измененное выражение, которое отличается от предполагаемого шаблона.

Благодаря исключению удвоения обратной косой черты шаблон стал таким: ]^(0[1-9]|1[0-2])/d{4}$

^(0[1-9]|1[0-2])/d{4}$

var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");
var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");

Кроме того, стоит рассмотреть возможность непосредственного использования синтаксиса регулярных выражений:

var regEx = /^(0[1 -9]|1[0-2])\/\d{4}$/g;
var regEx = /^(0[1-9]|1[0-2])\/\d{4}$/g;
Заявление о выпуске Эта статья перепечатана по адресу: 1729229116. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3