2014-01-10 3 views
0
  • Пароль не может содержать пробелы
  • должен содержать по крайней мере один числовой символ
  • должен содержать 1 заглавную букву
  • и быть не менее 8 символов в длину, не более 15

Это то, что у меня есть, что делает все, кроме правила WHITE SPACE.Пароль проверки REGEX запретить пробельные символы

((?=.*\d)(?=.*[A-Z]).{8,15}) 

Что добавить для этого?

Большое спасибо! Язык: C#, осина: RegularExpressionValidator

+6

Из-за любопытства, почему вы запретили бы пробелы? –

+2

Кроме того, почему вы закрываете его до 15 символов? Если вам нужно это сделать, сделайте хотя бы 40 символов. –

ответ

0

^((?!.*[\s])(?=.*[A-Z])(?=.*\d).{8,15})

+0

работал отлично, спасибо – Dzagana

+0

Это в значительной степени то, что я написал, за исключением того, что это было опубликовано, как через 12 минут и не включая объяснение, тестовую ссылку и, прежде всего, 15-символьный предел не реализован. Тем не менее, если это работает отлично, я надеюсь, что этого достаточно :) – ccjmne

+0

@ccjmne абсолютно пишет, он не проверяет ограничение на 15 символов. –

3

Просто матч:

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

Как это работает:

.{8,15} означает: 8 до 15 символов

(?!.*) означает: не содержит ""
(?=.*\d) означает: содержит хотя бы одну цифру.
(?=.*[A-Z]) означает: содержит, по меньшей мере, одну заглавную букву

+1

Не могли бы вы разбить свое регулярное выражение на многострочный комментарий и добавить комментарии к каждой части? –

+0

это работало для 2 белых пробелов, но почему-то разрешало эту строку: as2dadasd asddD – Dzagana

+0

Попробуй там: http://regexr.com?37uld, похоже, работает для меня! На самом деле, может быть, вы просто попробовали это прямо перед тем, как я его обновил, принимая во внимание комментарий @ FJ :) – ccjmne

0

В качестве альтернативы RegEx, вы рассмотрели только основные строки синтаксического анализа? Другими словами, если вам нужна помощь в написании RegEx, что произойдет с ремонтопригодностью с течением времени?

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

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

/// <summary> 
/// Determines whether a password is valid. 
/// </summary> 
/// <param name="password">The password.</param> 
/// <returns>A Tuple where Item1 is a boolean (true == valid password; false otherwise). 
/// And Item2 is the message validating the password.</returns> 
public Tuple<bool, string> IsValidPassword(string password) 
{ 
    if(password.Contains(" ")) 
    { 
     return new Tuple<bool, string>(false, "Password cannot contain white spaces."); 
    } 

    if(!password.Any(char.IsNumber)) 
    { 
     return new Tuple<bool, string>(false, "Password must contain at least one numeric char."); 
    } 

    // perhaps the requirements meant to be 1 or more capital letters? 
    // if(!password.Any(char.IsUpper)) 
    if(password.Count(char.IsUpper) != 1) 
    { 
     return new Tuple<bool, string>(false, "Password must contain only 1 capital letter."); 
    } 

    if(password.Length < 8) 
    { 
     return new Tuple<bool, string>(false, "Password is too short; must be at least 8 characters (15 max)."); 
    } 

    if(password.Length > 15) 
    { 
     return new Tuple<bool, string>(false, "Password is too long; must be no more than 15 characters (8 min)."); 
    } 

    return new Tuple<bool, string>(true, "Password is valid."); 
} 
Смежные вопросы