2013-10-25 94 views
2

使用模式屬性處理需要密碼字段的項目。 沒有真正做過很多正則表達式的東西,並想知道是否有人可以幫忙。是正則表達式密碼問題

爲現場的要求如下:

  • 不能包含單詞 「password」
  • 長度必須在8-12
  • 必須有1個大寫
  • 必由之路有1小寫
  • 必須有1位

現在,到目前爲止我有以下幾種:

[^(password)].(?=.*[0-9])?=.*[a-zA-Z]).{8,12} 

這是行不通的。除了要匹配的密碼字符串之外,我們可以得到它,因此一切正常。

由於提前, 安迪

編輯:我們現在(嵌套在下面的評論)已經使用的方法是: ^(?!.*(P|p)(A|a)(S|s)(S|s)(W|w)(O|o)(R|r)(D|d)).(?=.*\d)(?=.*[a-zA-Z]).{8,12}$

感謝您的幫助

+0

我嘗試了所有的人我可以找到stac koverflow並找不到一個正常工作的HTML5 – andyroo

+1

爲什麼您的要求列出最多12個字符?這不再是20世紀60年代了,今天的大多數硬件/軟件都可以處理更長的密碼。 http://www.explainxkcd.com/wiki/index.php?標題= 936:_Password_Strength –

+0

這只是在規範什麼公司要求的,不是我的事勸告之類的東西unfortuneately – andyroo

回答

1

此正則表達式應該給作業:

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

它將匹配:

^    // from the beginning of the input 
(?!.*password) // negative lookbehind whether the text contains password 
(?=.*\d+)  // positive lookahead for at least one digit 
(?=.*[A-Z]+) // positive lookahead for at least one uppercase letter 
(?=.*[a-z]+) // positive lookahead for at least one lowercase letter 
.{8,12}   // length of the input is between 8 and 12 characters 
$ 

鏈接phpliveregex

+0

這與我用過的類似,而且這看起來效果很好。謝謝! – andyroo

+0

即使它包含密碼,這將匹配,嘗試在前面用這個代替^(?!。*((?I)的密碼))將匹配任何套管「密碼」 – Srb1313711

+0

看看我的回答對簡單的解決方案! –

0

試試這個:

^(?!.*password)(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,12}$ 

說明

^       Start anchor 
(?=.*[A-Z])    Ensure string has one uppercase letter 
(?=.*[0-9])    Ensure string has one digits. 
(?=.*[a-z])    Ensure string has one lowercase letter 
{8,12}     Ensure string is of length 8 - 12. 
(?!.*password)   Not of word password 
$       End anchor. 
+2

您的密碼校驗表達是相當搞砸了:現在它的意思是「必須包含比一個其他的字符'()adoprsw'「 – Bohemian

2

採用了一系列的錨定看看aheads對的:必須包含」標準:

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

我已經添加了‘忽略大小寫’切換到(?i)‘密碼’的要求,所以它會不管字母的大小寫都拒絕這個詞。

+0

+1只是不要忘記在底部的'$' – Teneff

+0

出於某種原因,我似乎無法得到它在HTML5 – andyroo

+0

任何情況下工作,我們已經拿出這種解決方案' ^(*(p |?!p)(A | A)(S | S)(S | S)(W | w)的(O | O)(R | R)(d | d))(。? (?=。* [az])(?=。* [AZ])。{8,12} $' – andyroo

0

嘗試這種方式

 Public void validation() 
     string xxxx = "Aa1qqqqqq"; 
     if (xxxx.ToUpper().Contains("password") || !(xxxx.Length <= 12 & xxxx.Length >= 8) || !IsMatch(xxxx, "(?=.*[A-Z])") || !IsMatch(xxxx, "(?=.*[a-z])") || !IsMatch(xxxx, "(?=.*[0-9])")) 
     { 
      throw new System.ArgumentException("Your error message here", "Password"); 
     } 
     } 

     public bool IsMatch(string input, string pattern) 
     { 
      Match xx = Regex.Match(input, pattern); 
      return xx.Success; 
     } 
+0

我們使用正則表達式在HTML5 – andyroo

+0

同我也用正則表達式,請參閱IsMatch方法,我的代碼可以幫助爲檢查所有要求的密碼,如果一切是正確的if條件是返回false,其他明智的,如果條件將真,然後在那裏添加錯誤信息!你可以檢查它! –