正则表达式以验证URI

时间:2020-03-05 18:44:01  来源:igfitidea点击:

如何生成仅与有效URI匹配的正则表达式。 URI的描述可以在以下位置找到:http://en.wikipedia.org/wiki/URI_scheme。它不需要提取任何部分,只需测试URI是否有效。

(首选格式是.Net RegularExpression)(。Net版本1.1)

  • 无需检查已知协议,只需检查有效协议即可。

当前解决方案:

^([a-zA-Z0-9+.-]+):(//([a-zA-Z0-9-._~!$&'()*+,;=:]*)@)?([a-zA-Z0-9-._~!$&'()*+,;=]+)(:(\d*))?(/?[a-zA-Z0-9-._~!$&'()*+,;=:/]+)?(\?[a-zA-Z0-9-._~!$&'()*+,;=:/?@]+)?(#[a-zA-Z0-9-._~!$&'()*+,;=:/?@]+)?$(:(\d*))?(/?[a-zA-Z0-9-._~!$&'()*+,;=:/]+)?(\?[a-zA-Z0-9-._~!$&'()*+,;=:/?@]+)?(\#[a-zA-Z0-9-._~!$&'()*+,;=:/?@]+)?$

解决方案

回答

我们是否在乎某些特定的URI,或者我们是否正在尝试寻找一个可以验证STD66的正则表达式?

我正要指出我们要解析此URI的正则表达式。从理论上讲,我们可以检查是否所有我们关心的元素都在那里。

但是我认为bdukes的答案更好。

回答

Uri.IsWellFormedUriString对我们有用吗?

回答

这个网站看起来很有希望:http://snipplr.com/view/6889/regular-expressions-for-uri-validationparsing/

他们提出以下正则表达式:

/^([a-z0-9+.-]+):(?://(?:((?:[a-z0-9-._~!$&'()*+,;=:]|%[0-9A-F]{2})*)@)?((?:[a-z0-9-._~!$&'()*+,;=]|%[0-9A-F]{2})*)(?::(\d*))?(/(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?|(/?(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9A-F]{2})+(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?)(?:\?((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?$/i