为什么此代码中的模式不起作用?

时间:2019-04-04 12:32:19

标签: c# xamarin

我正在写一个注册页面,因此我必须拥有至少8个字符,但是我想包含一个特殊字符,但是验证没有看到我输入了一个特殊字符。 / p>

const int minLength = 8;
const string pattern = ("[@#$%^&+=!]");
public string Message { get; set; } = $"Password should at least {minLength} characters long and should include a special character {pattern}.";

public bool Check(string value) => !string.IsNullOrEmpty(value) && value.Length >= minLength && value.Contains(pattern);

2 个答案:

答案 0 :(得分:1)

不能使用Contains方法来应用正则表达式。 Containsstring内查找字符序列。

您需要执行以下操作:

const int minLength = 8;
const string pattern = ("[@#$%^&+=!]");
Regex regex = new Regex(pattern);
public bool Check(string value) => !string.IsNullOrEmpty(value) && 
                         value.Length >= minLength && regex.Match(value).Success;

答案 1 :(得分:0)

String.Contains()进行文字字符串匹配。

要使用正则表达式,请使用Regex

    Regex rx = new Regex(@"[@#$%^&+=!]",
      RegexOptions.Compiled | RegexOptions.IgnoreCase);

    // Define a test string.        
    string text = "The the quick brown fox  fox jumps over the lazy dog dog.";

    // Find matches.
    MatchCollection matches = rx.Matches(text);