有Uri.IsWellFormedUriString和Uri.TryCreate方法,但它们似乎返回true文件路径等.
如何检查字符串是否是用于输入验证的有效(不一定是活动的)HTTP URL?
有没有一种方法可以验证.Net,ASP.Net或ASP.Net MVC中的URL?
参考:下面的(基本上)代码的.NET提琴。
我正在尝试使用FluentValidation 测试a string是否有效Uri:
public class LinksValidator : AbstractValidator<string>
{
public LinksValidator()
{
RuleFor(x => x)
.Must(LinkMustBeAUri)
.WithMessage("Link '{PropertyValue}' must be a valid URI. eg: http://www.SomeWebSite.com.au");
}
private static bool LinkMustBeAUri(string link)
{
if (string.IsNullOrWhiteSpace(link))
{
return false;
}
Uri result;
return Uri.TryCreate(link, UriKind.Absolute, out result);
}
}
Run Code Online (Sandbox Code Playgroud)
并进行验证测试...
public class LinksValidatorTests
{
private readonly LinksValidator _linksValidator;
public LinksValidatorTests()
{
_linksValidator = new LinksValidator();
}
[Theory]
[InlineData("Http://www.SomeDomain.com")]
[InlineData("https://www.SomeDomain.com")]
[InlineData("http://www.SomeDomain.com.au")]
public void GivenAValidUri_Validate_ShouldNotHaveAValidationError(string uri)
{
// …Run Code Online (Sandbox Code Playgroud)