2013-07-03 97 views
0

我得分基於各種特徵的密碼,但我不相信我的正則表達式是正確的:VB.NET正則表達式匹配布爾

If Regex.IsMatch(password, "/\d+/", RegexOptions.ECMAScript) Then 
     'Contains a number 
     score += 1 
    End If 

    If Regex.IsMatch(password, "/[a-z]/", RegexOptions.ECMAScript) Then 
     'Contains a lowercase letter 
     score += 1 
    End If 

    If Regex.IsMatch(password, "/[A-Z]/", RegexOptions.ECMAScript) Then 
     'Contains an uppercase letter 
     score += 1 
    End If 

    If Regex.IsMatch(password, "/.[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]/", RegexOptions.ECMAScript) Then 
     'Contains special character 
     score += 2 
    End If 

我該如何解決這個問題?我相信這些格式爲C#而不是VB.NET。

+0

你的問題是什麼? – SLaks

+0

我不相信這是正常工作。我希望有人能幫我改進它。 – Dan

回答

1

.Net正則表達式類採用正則表達式的原始文本。

你不應該把它包裝在/個字符中;那些簡單地匹配文字文本/

其他一些注意事項:

  • 你不需要RegexOptions.ECMAScript
  • 字符類是不以逗號分隔
  • 你缺少一些特殊字符。使用否定類(所有非字母數字字符)
  • 通過將它們預編譯爲可重用的Regex實例,而不是每次重新解析每個正則表達式,可以使它們更快。
+0

代碼示例?另外,IsMatch方法是正確的還是應該只是匹配? – Dan

+0

所以我需要的數字是'「\ d」'作爲匹配的模式? – Dan

+0

是否這樣? http://stackoverflow.com/questions/2929264/is-there-a-more-concise-regular-expression-to-accomplish-this-task – Dan