Мне нужно регулярное выражение, которое определит, является ли строка URL-адресом твита. У меня есть этоПочему эта проверка регулярного выражения возвращает true для этой строки?
Regexp.new(/http:|https:\/\/(twitter\.com\/.*\/status\/.*|twitter\.com\/.*\/statuses\/.*|www\.twitter\.com\/.*\/status\/.*|www\.twitter\.com\/.*\/statuses\/.*|mobile\.twitter\.com\/.*\/status\/.*|mobile\.twitter\.com\/.*\/statuses\/.*)/i)
Почему это верно для следующего?
"http://i.stack.imgur.com/QdOS0.jpg".match(Regexp.new(/http:|https:\/\/(twitter\.com\/.*\/status\/.*|twitter\.com\/.*\/statuses\/.*|www\.twitter\.com\/.*\/status\/.*|www\.twitter\.com\/.*\/statuses\/.*|mobile\.twitter\.com\/.*\/status\/.*|mobile\.twitter\.com\/.*\/statuses\/.*)/i))? true : false
=> true
Если вы используете Regexp.new ('HTTP: //', 'я'), вы в безопасности себя некоторые миновать беды. – giraff
см. [Strfriend] (http: //strfriend.com/vis? Re = http% 3A | https% 3A \% 2F \% 2F% 28twitter \ .com \% 2F. * \% 2Fstatus \% 2F. * | твиттер \ .com \% 2F * \% 2Fstatuses \% 2F * |.. WWW \ .twitter \ .com \% 2F * \% 2Fstatus \% 2F * |.. WWW \ .twitter \ .com \% 2F. * \% 2Fstatuses \% 2F * |.. мобильный \ .twitter \ .com \% 2F * \% 2Fstatus \% 2F * |.. мобильный \ .twitter \ .com \% 2F * \% 2Fstatuses \% 2F. *% 29) – giraff
Ответ уже дан, но я просто хочу оставить этот сайт здесь, он всегда очень помогает мне в борьбе с регулярными выражениями: [Rubular] (http: // bit.ly/e8G1IM) – Maran