C# 用于 URL 验证的正则表达式
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/9289007/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Regular Expression for URL validation
提问by PrateekSaluja
I have written regex to validate URL which could be either like
我已经编写了正则表达式来验证 URL,它可能类似于
google.com
www.google.com
http://www.google.com
https://www.google.com
I have used
我用过了
Regex urlRx = new Regex(@"^(http|ftp|https|www)://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#$\%\^\&\*\(\)_\-\=\+\\/\?\.\:\;\'\,]*)?$", RegexOptions.IgnoreCase);
It works for http & https.It is not working for google./com & www.google.com.
它适用于 http 和 https。它不适用于 google./com 和 www.google.com。
Please help me to solve this.
请帮我解决这个问题。
Thanks
谢谢
采纳答案by Yahia
回答by Sina Iravanian
Put the protocol section in an optional group i.e., ()?:
将协议部分放在一个可选组中,即()?:
^((http|ftp|https|www)://)?([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#$\%\^\&\*\(\)_\-\=\+\\/\?\.\:\;\'\,]*)?$
回答by danmbuen
I got this code from jquery.validation (i made some edits)
我从 jquery.validation 得到了这个代码(我做了一些编辑)
bool isValid = (Regex.IsMatch(value, @"(((([a-z]|\d|-|.||~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'()*+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]).(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]).(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]).(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|.||~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))).)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))).?)(:\d*)?)(/((([a-z]|\d|-|.||~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'()*+,;=]|:|@)+(/(([a-z]|\d|-|.||~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'()*+,;=]|:|@)))?)?(\?((([a-z]|\d|-|.||~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'()*+,;=]|:|@)|[\uE000-\uF8FF]|/|\?)*)?(#((([a-z]|\d|-|.||~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'()*+,;=]|:|@)|/|\?)*)?$"));
bool isValid = (Regex.IsMatch(value, @"(((([az]|\d|-|. ||~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|( %[\da-f]{2})|[!\$&'()*+,;=]|:)*@)?(((\d|[1-9]\d|1\d \d|2[0-4]\d|25[0-5]).(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0] -5]).(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]).(\d|[1-9]\ d|1\d\d|2[0-4]\d|25[0-5]))|((([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0- \uFFEF])|(([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|.||~|[\u00A0 -\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]) ([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))).)+(([az] ]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]| \d|-|.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF ]))).?)(:\d*)?)(/((([az]|\d|-|.||~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'()*+,;=]| :|@)+(/(([az]|\d|-|.||~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f] {2})|[!\$&'()*+,;=]|:|@) ))?)?(\?((([az]|\d|-|.| |~|[ \u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'()*+,;=]|:|@) |[\uE000-\uF8FF]|/|\?)*)?(#((([az]|\d|-|.||~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0- \uFFEF])|(%[\da-f]{2})|[!\$&'()*+,;=]|:|@)|/|\?)*)?$")) ;
I was searching for almost a whole day and this is the best I found.. These are just the few valid samples:
我搜索了几乎一整天,这是我找到的最好的..这些只是几个有效的样本:
- example.com
- example.com.ph
- www.example.com
- http://example.com
- https://example.com
- http://www.example.com
- ftp://example.com
- example.com/doc
- www.example.com/doc
- http://example.com/doc
- http://example.com/questions/12576252/convert-javascript-regex-to-c-sharp-regex-for-email-validation
- http://www.example.com/wpstyle/?p=364
- http://userid:[email protected]:8080
- https://www.example.com/foo/?bar=baz&inga=42&quux
- LDAP://ad1.cc.uq.edu.ph
- 例子.com
- 例子.com.ph
- www.example.com
- http://example.com
- https://example.com
- http://www.example.com
- ftp://example.com
- 例子.com/doc
- www.example.com/doc
- http://example.com/doc
- http://example.com/questions/12576252/convert-javascript-regex-to-c-sharp-regex-for-email-validation
- http://www.example.com/wpstyle/?p=364
- http://userid:[email protected]:8080
- https://www.example.com/foo/?bar=baz&inga=42&quux
- LDAP://ad1.cc.uq.edu.ph
回答by Mayank Prajapati
^(http|http(s)?://)?([\w-]+\.)+[\w-]+[.com|.in|.org]+(\[\?%&=]*)?

