public static bool ValidatePin(string pin)
{
return Regex.IsMatch(pin, "^[0-9]{4}$|^[0-9]{6}$");
}
Wrong output for "1234\n"
Expected: False
But was: True
Как сделать так, что бы пропускало исключительно если цифры занимают всю строку. Или 4 цифры или 6. И не пропускать с пробелом или переносом каретки.
Не спец по Regex, но вы же можете и без него обойтись, например
public static bool ValidatePin2(string pin)
{
if(string.IsNullOrEmpty(pin)) return false;
if (pin.Length!=4 && pin.Length!=6) return false;
return pin.All(char.IsDigit);
}
вот с этим выражение работает правильно @"^[0-9]{4}\z|^[0-9]{6}\z"
Поскольку Perl возвращает строку с новой строкой в конце при чтении строки из файла, механизм регулярных выражений Perl соответствует $ в позиции перед разрывом строки в конце строки, даже если multi-line mode выключен. Perl также соответствует $ в самом конце строки, независимо от того, является ли этот символ разрывом строки. Поэтому ^\d+$ соответствует 123 независимо от того, является ли подстрока 123 или 123\n. Большинство современных вариантов регулярных выражений скопировали это поведение. Это включает в себя .NET. Если требуется соответствие только в абсолютном конце строки, используйте \z (нижний регистр z вместо верхнего регистра Z). \A\d+\z не соответствует 123\n. перевел вот отсюда https://www.regular-expressions.info/anchors.html
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть JObjectПосле выборки не могу преобразовать в JToken
Не могу разобраться, как все таки правильно, с контроллера передавать данные из БД в класс или все таки в классе получать доступ к БД? Например:...
Чтобы, при выборе в нём, они заносились в новый список, чтобы произвести с ними расчётыЗаранее благодарю за помощь