如何检查url是否包含fileEntityId的数字?

时间:2013-01-24 04:22:14

标签: ruby ruby-1.9

我有一些网址如下:

https://example.com/file/filegetrevision.do?fileEntityId=738007
9&cs=4Pzbb2jPu3EHBzv8RQHrGcPm4hZZkRC-CfH0my4dP0M.arv


https://example.com/file/filegetrevision.do?fileEntityId=&cs=2L
5cx4UsMsFJgM05pPtB_Z8dRdL4CXLLcTeDhGPDBIg.arv


https://example.com/file/filegetrevision.do?fileEntityId=2555874&cs=2L
5cx4UsMsFJgM05pPtB_Z8dRdL4CXLLcTeDhGPDBIg.arv

现在我需要检查哪个网址numbersfileEntityId或哪个网址没有?在这方面有什么帮助吗?说第一个和第三个网址包含7380072555874个数字fileEntityId,但第二个网址没有。{/ p>

由于

2 个答案:

答案 0 :(得分:1)

这里我们使用正则表达式来查明字符串是否包含“fileEntityId =”后跟一个或多个数字:

urls = ['https://example.com/file/filegetrevision.do?fileEntityId=7380079&cs=4Pzbb2jPu3EHBzv8RQHrGcPm4hZZkRC-CfH0my4dP0M.arv',
  'https://example.com/file/filegetrevision.do?fileEntityId=&cs=2L5cx4UsMsFJgM05pPtB_Z8dRdL4CXLLcTeDhGPDBIg.arv',
  'https://example.com/file/filegetrevision.do?fileEntityId=2555874&cs=2L5cx4UsMsFJgM05pPtB_Z8dRdL4CXLLcTeDhGPDBIg.arv']


urls.map {|u| !!(u =~ /fileEntityId=\d+/)} # => [true, false, true]

答案 1 :(得分:1)

尽管我喜欢正则表达式,但标准库中还包含更多合适的工具:

require 'uri'
require 'cgi'

url = "https://example.com/file/filegetrevision.do?fileEntityId=7380079&cs=4Pzbb2jPu3EHBzv8RQHrGcPm4hZZkRC-CfH0my4dP0M.arv"
query = URI::parse(url).query # => "fileEntityId=7380079&cs=4Pzbb2jPu3EHBzv8RQHrGcPm4hZZkRC-CfH0my4dP0M.arv"
fileEntityId = CGI::parse(query)['fileEntityId'] # => ["7380079"]

然后你可以检查它是否是一个数字。