我之前发过一个类似的问题,但我现在意识到我应该更加彻底。
我已经测试了regexlib.com上列出的一些URL / URI表达式,但是我不能让它们中的任何一个按照需要运行:
msn.com
msn-msn.net
yahoo.c!om
http://www.yahoo.com
msn msn
test ! number 1
以下是我希望他们采取行动的方式:
msn.com (match)
msn-msn.net (match)
yahoo.c!om (fail)
http://www.yahoo.com (match)
msn msn (fail)
test ! number 1 (fail)
我在这里使用测试器:http://regexlib.com/RETester.aspx然后在我自己的应用程序(C#,.NET 4.0)中进行测试
最接近的表达式是这个,但它与http://www.yahoo.com表达式不匹配:
^[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*
感谢任何帮助。另外,有人应该提出一个更像人类可读的RegEx ...这个东西是一个噩梦。
谢谢, Beems
答案 0 :(得分:0)
如果你不能保证你想要匹配的URL-esque模式有一个方案/协议,那么最安全的做法是匹配top-level domains:
^(https?://)[^/]*.([possibly|really|long|list|of|valid|top|level|domains][2])
从你的帖子中显然没有必要进入URL的路径,哈希或查询部分,所以就是这样!
答案 1 :(得分:0)
这个似乎按预期工作:
[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?
任何人都可以看到有关我的原始查询的任何问题吗?我不需要验证TLD是否合适,所以这不是一个真正的问题。
答案 2 :(得分:0)