use lazy_static::lazy_static;
use regex::Regex;
pub fn is_url(s: impl AsRef<str>) -> bool {
URL_REGEX.is_match(s.as_ref())
}
lazy_static! {
static ref URL_REGEX: Regex = Regex::new(
r"^(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?"
)
.unwrap();
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_is_url() {
assert_eq!(true, is_url("http://www.abc.com"));
assert_eq!(true, is_url("http://www.abc.com:80"));
assert_eq!(true, is_url("https://www.123.com"));
assert_eq!(true, is_url("https://abc.com"));
assert_eq!(true, is_url("ftp://ftpserver.com:8090"));
assert_eq!(false, is_url(""));
assert_eq!(false, is_url("http://abc"));
assert_eq!(false, is_url("https://abc:80"));
}
}