0

我根据各种功能对密码进行评分,但我不相信我的 RegEx 是正确的:

    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 格式化的。

4

1 回答 1

1

.Net Regex 类采用正则表达式的原始文本。

你不应该用字符包装它/;那些只是匹配文字文本/

其他一些注意事项:

  • 你不需要RegexOptions.ECMAScript
  • 字符类不是逗号分隔的
  • 您缺少大量特殊字符。使用否定类(所有非字母数字字符)
  • 您可以通过将它们预编译成可重用Regex的实例来使它们更快,而不是每次都重新解析每个正则表达式。
于 2013-07-03T19:10:35.287 回答