【发布时间】:2014-09-05 04:30:55
【问题描述】:
这可能不是 Stackoverflow 的理想问题,如果我真的违反了指导方针(例如“过于本地化”),请抱歉。但这是一个非常有趣的问题:
我有以下正则表达式(更简单的 URL 匹配版本):
\A(http(s)?:\/\/)?(([\da-z\.-]+)\.([a-z]{2,6})(\.([a-z]{2,6}))?([\/\w \.-]*)*\/?)\z
现在如果我测试这个字符串(不匹配,因为特殊字符):
http://t3n.de/news/nokia-lumia-930-test-560264/?utm_source=feedburner+t3n+News+12.000er&utm_medium=feed&utm_campaign=Feed%3A+aktuell%2Ffeeds%2Frss+%28t3n+News%29
像这样(只是为了确保我没有犯明显的错误):
str = 'http://t3n.de/news/nokia-lumia-930-test-560264/?utm_source=feedburner+t3n+News+12.000er&utm_medium=feed&utm_campaign=Feed%3A+aktuell%2Ffeeds%2Frss+%28t3n+News%29'
str.match /\A(http(s)?:\/\/)?(([\da-z\.-]+)\.([a-z]{2,6})(\.([a-z]{2,6}))?([\/\w \.-]*)*\/?)\z/i
该命令永远运行。由于字符串不匹配,它不应该返回 nil 吗?我使用的是最新版本的 ruby,但在 Rubular 上也会出现这种情况:http://rubular.com/r/2ajABaqmTE
jarvis:~ rudolf$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
任何想法可能导致这种情况?我是否发现了 Ruby 错误或我遗漏了什么?
【问题讨论】: