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"^\d+\.\d+\.\d+$").unwrap();
pub static ref EXACT_TAG: Regex = Regex::new(r"^\d+\.\d+\.\d+\-[a-z0-9.-_]+$").unwrap();
pub static ref CARET: Regex = Regex::new(r"^\^(\d+\.\d+\.\d+)$").unwrap();
pub static ref CARET_TAG: Regex = Regex::new(r"^\^(\d+\.\d+\.\d+)\-[a-z0-9.-_]+$").unwrap();
pub static ref TILDE: Regex = Regex::new(r"^~(\d+\.\d+\.\d+)$").unwrap();
pub static ref TILDE_TAG: Regex = Regex::new(r"^~(\d+\.\d+\.\d+)\-[a-z0-9.-_]+$").unwrap();
pub static ref GT: Regex = Regex::new(r"^>(\d+\.\d+\.\d+)$").unwrap();
pub static ref GT_TAG: Regex = Regex::new(r"^>(\d+\.\d+\.\d+)\-[a-z0-9.-_]+$").unwrap();
pub static ref GTE: Regex = Regex::new(r"^>=(\d+\.\d+\.\d+)$").unwrap();
pub static ref GTE_TAG: Regex = Regex::new(r"^>=(\d+\.\d+\.\d+)\-[a-z0-9.-_]+$").unwrap();
pub static ref LT: Regex = Regex::new(r"^<(\d+\.\d+\.\d+)$").unwrap();
pub static ref LT_TAG: Regex = Regex::new(r"^<(\d+\.\d+\.\d+)\-[a-z0-9.-_]+$").unwrap();
pub static ref LTE: Regex = Regex::new(r"^<=(\d+\.\d+\.\d+)$").unwrap();
pub static ref LTE_TAG: Regex = Regex::new(r"^<=(\d+\.\d+\.\d+)\-[a-z0-9.-_]+$").unwrap();
pub static ref CARET_MINOR: Regex = Regex::new(r"^\^(\d+\.\d+)$").unwrap();
pub static ref TILDE_MINOR: Regex = Regex::new(r"^~(\d+\.\d+)$").unwrap();
pub static ref GT_MINOR: Regex = Regex::new(r"^>(\d+\.\d+)$").unwrap();
pub static ref GTE_MINOR: Regex = Regex::new(r"^>=(\d+\.\d+)$").unwrap();
pub static ref LT_MINOR: Regex = Regex::new(r"^<(\d+\.\d+)$").unwrap();
pub static ref LTE_MINOR: Regex = Regex::new(r"^<=(\d+\.\d+)$").unwrap();
pub static ref CARET_MAJOR: Regex = Regex::new(r"^\^(\d+)$").unwrap();
pub static ref TILDE_MAJOR: Regex = Regex::new(r"^~(\d+)$").unwrap();
pub static ref GT_MAJOR: Regex = Regex::new(r"^>(\d+)$").unwrap();
pub static ref GTE_MAJOR: Regex = Regex::new(r"^>=(\d+)$").unwrap();
pub static ref LT_MAJOR: Regex = Regex::new(r"^<(\d+)$").unwrap();
pub static ref LTE_MAJOR: Regex = Regex::new(r"^<=(\d+)$").unwrap();
pub static ref MAJOR: Regex = Regex::new(r"^(\d+)$").unwrap();
pub static ref MINOR: Regex = Regex::new(r"^(\d+\.\d+)$").unwrap();
pub static ref ALIAS: Regex = Regex::new(r"^npm:.+").unwrap();
pub static ref FILE: Regex = Regex::new(r"^file:").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();
}