Javascript Regex Браузер Неустойчивость? - PullRequest
2 голосов
/ 10 октября 2009

У меня есть регулярное выражение, которое я использую в asp.net RegularExpressionValidator для проверки TextField.

^(?=.*[a-z])(?=.*\d)(?=.*[A-Z]).{8,}$

Пример строки, на которую я наткнулся, - 'RedCoal1'

Firefox = Совпадает
IE8 = соответствует
Хром = соответствует

IE7 = НЕ СООТВЕТСТВУЕТ

ПОЧЕМУ !!!!

1 Ответ

6 голосов
/ 10 октября 2009

Реализация lookahead в RegExp WSH, используемая IE , просто сломана . В этом случае ошибка обычно появляется, пытаясь использовать одно регулярное выражение для проверки нескольких вещей одновременно.

Кроме того, некоторые старые браузеры вообще не поддерживают прогнозирование (это не было в оригинальной спецификации JavaScript, хотя теперь это в ECMA-262-3). В общем, лучше избегать заглядывания в браузер RegExp.

Лучше всего разделить каждую проверку (каждый класс символов и длину) на этапы ручной проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...