Регулярное выражение вуду в ASP - PullRequest
2 голосов
/ 17 ноября 2011

Ох, хорошо, что я не плачу свою зарплату в такие дни. Я скопировал некоторые шаблоны регулярных выражений из Javascript на стороне клиента в серверный ASP, и шаблон электронной почты не работает, но идентичная функция для шаблона пароля сегодня стоила моему боссу 6 часов (наш маленький секрет).

Function validatePassword(strPass)
  Dim regEx
  Set regEx = new RegExp

  regEx.IgnoreCase = false
  regEx.global = false
  regEx.Pattern = "^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,10}$"
  ValidatePassword = regEx.Test(strPass)
End Function

Это простой шаблон 1 верхний, 1 нижний, 1 цифра, 6-10 символов, и нет никаких сомнений в том, что он соответствует, как следует, но, напр. 3DMM9igggg возвращает false, но gDMM9igggg возвращает true. Он отлично работает в JS, здесь: http://www.regular -expressions.info / javascriptexample.html и в нескольких других тестерах, которые я пробовал.

WTF? Может кто-нибудь одолжить мне глаза на секунду?

Спасибо

1 Ответ

2 голосов
/ 18 ноября 2011

Возможно, ваш конкретный движок регулярных выражений ASP не поддерживает просмотр так же, как движок javascript. Так обстоит дело с некоторыми двигателями, согласно 4-му абзацу в разделе «Дополнительные темы» по этой ссылке: http://msdn.microsoft.com/en-us/library/ms972966.aspx#regexnet_topic13

В 5-м абзаце также есть пример проверки пароля на основе упреждающего поиска.

Если проблема действительно в двигателе, простое, но неэффективное решение - запустить 3 теста: один для верхнего, один для нижнего, один для цифры с включенным тестом длины.

...