diff --git a/FluentValidator.Tests/StringValidationContractTests.cs b/FluentValidator.Tests/StringValidationContractTests.cs index bcf1c78..35d7b34 100644 --- a/FluentValidator.Tests/StringValidationContractTests.cs +++ b/FluentValidator.Tests/StringValidationContractTests.cs @@ -191,5 +191,23 @@ public void Match() Assert.AreEqual(true, right.Valid); } + + [TestMethod] + [TestCategory("StringValidation")] + public void HasNumber() + { + var wrong = new ValidationContract() + .Requires() + .HasNumber("wrong", "string", "String dont has number"); + + Assert.AreEqual(false, wrong.Valid); + Assert.AreEqual(1, wrong.Notifications.Count); + + var right = new ValidationContract() + .Requires() + .HasNumber("correct1", "string", "String has number"); + + Assert.AreEqual(true, right.Valid); + } } } diff --git a/FluentValidator/Validation/StringValidationContract.cs b/FluentValidator/Validation/StringValidationContract.cs index 5a3e5a2..86447f2 100644 --- a/FluentValidator/Validation/StringValidationContract.cs +++ b/FluentValidator/Validation/StringValidationContract.cs @@ -18,8 +18,8 @@ public ValidationContract IsNullOrEmpty(string val, string property, string mess AddNotification(property, message); return this; - } - + } + public ValidationContract IsNotNullOrWhiteSpace(string val, string property, string message) { if (string.IsNullOrWhiteSpace(val)) @@ -122,5 +122,13 @@ public ValidationContract Matchs(string text, string pattern, string property, s return this; } + + public ValidationContract HasNumber(string val, string property, string message) + { + if (Regex.IsMatch(val ?? "", @"\d+")) + AddNotification(property, message); + + return this; + } } }