Провал тестирования регулярных выражений 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;
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3