【发布时间】:2014-04-26 19:57:02
【问题描述】:
我正在制作并且最初可以正常工作,只是因为我很幸运,我正在测试的视频是有效的。请允许我进一步解释。
我想做的是上传 vimeo 内容。通常在 vimeo 的 url 中,数字部分由 7 位或 8 位数字组成,我试图将它们捕获并将它们放在我的 show 和 index.html 中。我最初使它工作并且我认为它功能齐全,但是当我尝试上传更多视频时,结果证明我的模型文件或索引中的正则表达式只允许捕获一位数字。一开始视频会播放,因为带有一位数字的网址恰好是有效的。所以我想知道我做错了什么。我在 rubular 上尝试了一些东西,但我怀疑我想出的正则表达式没有做我认为他们正在做的事情。这是我所拥有的:
validates :url_id, format: { with: /\Ahttp:\/\/vimeo.com\/\d+/ }
validates :url_id, format: { with: /\Ahttp:\/\/vimeo.com\/\d{7,8}/ }
以上代码在我的模型文件中。第一行代码应该可以工作。我希望用户复制粘贴这种格式的 url,因为 vimeo url 在其 url 中有 7 或 8 位数字,这应该验证 url(我认为,Rubular 为我确认了它)。
在我的 index.html 和 show.html 中,我有这个:
<iframe src="http://player.vimeo.com/video/<%=/[0-9]/.match(music_video.url_id)%>"
将 [0-9] 放入 rubular 告诉我它应该捕获 url 中的所有数字,但它只捕获一个数字,即第一个数字。我错过了什么吗? \d+ 会做一些我不知道的事情吗?
【问题讨论】:
-
只是为了澄清一些事情,正则表达式不要骗我们。相反,我们搞砸了模式,它尽职尽责地返回结果。垃圾进,垃圾出。
-
-1 表示正则表达式在撒谎。