You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.9 KiB
42 lines
1.9 KiB
module Twitter |
|
class Regex |
|
|
|
REGEXEN[:valid_general_url_path_chars] = /[^\p{White_Space}\(\)\?]/iou |
|
REGEXEN[:valid_url_path_ending_chars] = /[^\p{White_Space}\(\)\?!\*';:=\,\.\$%\[\]~&\|@]|(?:#{REGEXEN[:valid_url_balanced_parens]})/iou |
|
REGEXEN[:valid_url_balanced_parens] = / |
|
\( |
|
(?: |
|
#{REGEXEN[:valid_general_url_path_chars]}+ |
|
| |
|
# allow one nested level of balanced parentheses |
|
(?: |
|
#{REGEXEN[:valid_general_url_path_chars]}* |
|
\( |
|
#{REGEXEN[:valid_general_url_path_chars]}+ |
|
\) |
|
#{REGEXEN[:valid_general_url_path_chars]}* |
|
) |
|
) |
|
\) |
|
/iox |
|
REGEXEN[:valid_url_path] = /(?: |
|
(?: |
|
#{REGEXEN[:valid_general_url_path_chars]}* |
|
(?:#{REGEXEN[:valid_url_balanced_parens]} #{REGEXEN[:valid_general_url_path_chars]}*)* |
|
#{REGEXEN[:valid_url_path_ending_chars]} |
|
)|(?:#{REGEXEN[:valid_general_url_path_chars]}+\/) |
|
)/iox |
|
REGEXEN[:valid_url] = %r{ |
|
( # $1 total match |
|
(#{REGEXEN[:valid_url_preceding_chars]}) # $2 Preceeding chracter |
|
( # $3 URL |
|
(https?:\/\/)? # $4 Protocol (optional) |
|
(#{REGEXEN[:valid_domain]}) # $5 Domain(s) |
|
(?::(#{REGEXEN[:valid_port_number]}))? # $6 Port number (optional) |
|
(/#{REGEXEN[:valid_url_path]}*)? # $7 URL Path and anchor |
|
(\?#{REGEXEN[:valid_url_query_chars]}*#{REGEXEN[:valid_url_query_ending_chars]})? # $8 Query String |
|
) |
|
) |
|
}iox |
|
end |
|
end
|
|
|