Я не могу использовать шаблон в строковой переменной, потому что регулярные выражения никогда не совпадают.
Позвольте мне описать, чего я хочу достичь.У меня есть сервис, который возвращает шаблон строки для пароля.Допустим, текущий шаблон:
\\b(?=.*?[A-Z])(?=.*?[0-9]).{6,}\\b
. Это означает, что пароль должен содержать не менее 6 символов, одну цифру и одну заглавную букву.Я проверяю это:
string passwordPattern = "\\b(?=.*?[A-Z])(?=.*?[0-9]).{6,}\\b";
var rgxPasswordPattern = new Regex(passwordPattern);
var result = rgxPasswordPattern.IsMatch("Password1");
if(result)
Console.Write("Password match!");
else
Console.Write("Password doesn't match!");
Это работает, вы можете попробовать это здесь: https://dotnetfiddle.net/FNzZjh
Проблема возникает, когда я использую приведенный выше код в своей среде.Единственное отличие заключается в способе получения шаблона пароля:
string passwordPattern = _signInService.GetPasswordPattern();
Я заметил, что passwordPattern
содержит шаблон, заключенный в кавычки:
Это приводит к тому, что rgxPasswordPattern
содержит также кавычки:
Итак, я удалил кавычки из шаблона на passwordPattern.Substring(1, passwordPattern.Length - 2)
:
И проверено rgxPasswordPattern
Переменная:
Да, никаких дополнительных кавычек нет.Но пароль все еще не совпадает с шаблоном!
Как это возможно?Я понятия не имею, что еще я могу сделать.Шаблон в порядке и работает в dotnetfiddle.net , но не в моей среде.
Буду признателен за любой совет.