#c# #regex
#c# #регулярное выражение
Вопрос:
Мне нужно регулярное выражение, которое проверяет, является ли ввод ровно 4 числами. Я использую «d{4}» (также пробовал «d d dd»). Но если вы вводите 5 чисел, это также говорит о том, что входные данные действительны.
[TestMethod]
public void RegexTest()
{
Regex expr = new Regex("\d{4}");
String a = "4444", b = "4l44", c = "55555", d = "5 55";
Match mc = expr.Match(a);
Assert.IsTrue(mc.Success);
mc = expr.Match(b);
Assert.IsFalse(mc.Success);
***mc = expr.Match(c);
Assert.IsFalse(mc.Success)***;
mc = expr.Match(d);
Assert.IsFalse(mc.Success);
}
(это c, которое является ‘true’, но должно быть false, остальные работают)
Заранее спасибо, ~ сэр Тролль
Ответ №1:
Если должно быть ровно 4, то вам нужно использовать $ и ^, чтобы отметить конец и начало ввода:
Regex expr = new Regex(@"^d{4}$");
Обратите внимание, что здесь я также использую дословные строковые литералы, так что экономьте на здравомыслии — тогда вам не нужно C # экранировать все ваши символы regex-escape. Только "
требуется экранирование в C # (для ""
).
Ответ №2:
«55555» содержит «5555», которое является допустимым… Таким образом, строка содержит совпадение, даже если совпадение не является полной строкой. Решение смотрите в ответе Марка
Ответ №3:
строка из 5 цифр также содержит 4 цифры, поэтому вы должны убедиться, что вы также добавляете ограничения на начало и конец строки.
Это должно работать как ваше регулярное выражение:
Regex expr = new Regex(@"^d{4}$");