正则表达式以验证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