use {lazy_static::lazy_static, regex::Regex};
lazy_static! {
pub static ref RANGE_CHARS: Regex = Regex::new(r"^(~|\^|\*|>=?|<=?)").unwrap();
pub static ref EXACT: Regex = Regex::new(r"^[0-9]+\.[0-9]+\.[0-9]+$").unwrap();
pub static ref EXACT_TAG: Regex = Regex::new(r"^[0-9]+\.[0-9]+\.[0-9]+\-[a-z0-9.-_]+$").unwrap();
pub static ref EXACT_EQUALS: Regex = Regex::new(r"^=([0-9]+\.[0-9]+\.[0-9]+)$").unwrap();
pub static ref EXACT_EQUALS_TAG: Regex = Regex::new(r"^=([0-9]+\.[0-9]+\.[0-9]+)\-[a-z0-9.-_]+$").unwrap();
pub static ref CARET: Regex = Regex::new(r"^\^([0-9]+\.[0-9]+\.[0-9]+)$").unwrap();
pub static ref CARET_TAG: Regex = Regex::new(r"^\^([0-9]+\.[0-9]+\.[0-9]+)\-[a-z0-9.-_]+$").unwrap();
pub static ref TILDE: Regex = Regex::new(r"^~([0-9]+\.[0-9]+\.[0-9]+)$").unwrap();
pub static ref TILDE_TAG: Regex = Regex::new(r"^~([0-9]+\.[0-9]+\.[0-9]+)\-[a-z0-9.-_]+$").unwrap();
pub static ref GT: Regex = Regex::new(r"^>([0-9]+\.[0-9]+\.[0-9]+)$").unwrap();
pub static ref GT_TAG: Regex = Regex::new(r"^>([0-9]+\.[0-9]+\.[0-9]+)\-[a-z0-9.-_]+$").unwrap();
pub static ref GTE: Regex = Regex::new(r"^>=([0-9]+\.[0-9]+\.[0-9]+)$").unwrap();
pub static ref GTE_TAG: Regex = Regex::new(r"^>=([0-9]+\.[0-9]+\.[0-9]+)\-[a-z0-9.-_]+$").unwrap();
pub static ref LT: Regex = Regex::new(r"^<([0-9]+\.[0-9]+\.[0-9]+)$").unwrap();
pub static ref LT_TAG: Regex = Regex::new(r"^<([0-9]+\.[0-9]+\.[0-9]+)\-[a-z0-9.-_]+$").unwrap();
pub static ref LTE: Regex = Regex::new(r"^<=([0-9]+\.[0-9]+\.[0-9]+)$").unwrap();
pub static ref LTE_TAG: Regex = Regex::new(r"^<=([0-9]+\.[0-9]+\.[0-9]+)\-[a-z0-9.-_]+$").unwrap();
pub static ref CARET_MINOR: Regex = Regex::new(r"^\^([0-9]+\.[0-9]+)$").unwrap();
pub static ref TILDE_MINOR: Regex = Regex::new(r"^~([0-9]+\.[0-9]+)$").unwrap();
pub static ref GT_MINOR: Regex = Regex::new(r"^>([0-9]+\.[0-9]+)$").unwrap();
pub static ref GTE_MINOR: Regex = Regex::new(r"^>=([0-9]+\.[0-9]+)$").unwrap();
pub static ref LT_MINOR: Regex = Regex::new(r"^<([0-9]+\.[0-9]+)$").unwrap();
pub static ref LTE_MINOR: Regex = Regex::new(r"^<=([0-9]+\.[0-9]+)$").unwrap();
pub static ref CARET_MAJOR: Regex = Regex::new(r"^\^([0-9]+)$").unwrap();
pub static ref TILDE_MAJOR: Regex = Regex::new(r"^~([0-9]+)$").unwrap();
pub static ref GT_MAJOR: Regex = Regex::new(r"^>([0-9]+)$").unwrap();
pub static ref GTE_MAJOR: Regex = Regex::new(r"^>=([0-9]+)$").unwrap();
pub static ref LT_MAJOR: Regex = Regex::new(r"^<([0-9]+)$").unwrap();
pub static ref LTE_MAJOR: Regex = Regex::new(r"^<=([0-9]+)$").unwrap();
pub static ref MAJOR: Regex = Regex::new(r"^([0-9]+)$").unwrap();
pub static ref MINOR: Regex = Regex::new(r"^([0-9]+\.[0-9]+)$").unwrap();
pub static ref ALIAS: Regex = Regex::new(r"^npm:.+").unwrap();
pub static ref FILE: Regex = Regex::new(r"^file:").unwrap();
pub static ref LINK: Regex = Regex::new(r"^link:").unwrap();
pub static ref WORKSPACE_PROTOCOL: Regex = Regex::new(r"^workspace:").unwrap();
pub static ref URL: Regex = Regex::new(r"^https?://").unwrap();
pub static ref GIT: Regex = Regex::new(r"^git(://|hub:|@|\+(https|ssh)://)").unwrap();
pub static ref TAG: Regex = Regex::new(r"^[a-zA-Z]+$").unwrap();
pub static ref INFIX_OPERATORS:Regex = Regex::new(r" ?(-|\|\|) ?| ").unwrap();
pub static ref NAME_WITHIN_NPM_ALIAS:Regex = Regex::new(r"^npm:(.+?)(?:@.+)?$").unwrap();
}