C#regx表达式任何人都可以解决

时间:2018-07-08 08:04:31

标签: c#

  1. 至少一个小写字母,
  2. 至少一个大写字母,
  3. 至少是特殊字符
  4. 至少一个数字
  5. 至少8个字符的长度

问题在regx模式的“ / d”处显示错误

private void txtpassword_Leave(object sender, EventArgs e) {
    Regex pattern = new Regex("/^(?=.*[a-z])(?=.*[A-Z])(?=.*/d)(?=.*[#$@!%&*?])[A-Za-z/d#$@!%&*?]{10,12}$/");
    if (pattern.IsMatch(txtpassword.Text)) {
        MessageBox.Show("valid");
    } else {
        MessageBox.Show("Invalid");
        txtpassword.Focus();
    }
}

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

$ctx.identity

Tests

答案 1 :(得分:0)

在正则表达式中,反斜杠用于转义。 因此,应该是\ d而不是/ d。

但是您也可以只使用[0-9]。

^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[^a-zA-Z0-9\s])\S{8,}$

此外,在字符串中使用反斜杠时。
然后使用双反斜杠。或使用逐字字符串。 F.e. @“ foobar”

有关this SO post中的更多内容。

示例C#代码:

string[] strings = { "Foo!bar0", "foobar", "Foo bar 0!", "Foo!0" };

Regex rgx = new Regex(@"^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[^a-zA-Z0-9\s])\S{8,}$");

foreach (var str in strings){
    Console.WriteLine("[{0}] {1} valid.", str, rgx.IsMatch(str) ? "is" : "is not");
}

返回:

[Foo!bar0] is valid.
[foobar] is not valid.
[Foo bar 0!] is not valid.
[Foo!0] is not valid.