valust_regex_utils/
lib.rs

1#![doc = include_str!("../README.md")]
2
3pub mod time;
4
5/// Regex for matching a valid email address.
6///
7/// ## Example
8///
9/// ```rust
10/// use regex::Regex;
11/// use valust_regex_utils::EMAIL;
12///
13/// let email_regex = Regex::new(EMAIL).unwrap();
14/// assert!(email_regex.is_match("hello@world.com"));
15/// ```
16///
17/// ## Reference
18///
19/// - [HTML Standard / Email Address](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address)
20pub const EMAIL: &str = concat!(
21    r"^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+",
22    r"@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"
23);
24
25/// Regex for matching a syntax-valid URL.
26///
27/// This regex does not check if the URL is reachable, e.g., if the IP address is valid.
28///
29/// ## Example
30///
31/// ```rust
32/// use regex::Regex;
33/// use valust_regex_utils::URL;
34///
35/// let url_regex = Regex::new(URL).unwrap();
36/// assert!(url_regex.is_match("https://www.google.com"));
37/// ```
38pub const URL: &str = r"^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$";
39
40/// Regex for matching a valid ascii username with a minimum length of 3 characters.
41///
42/// ## Example
43///
44/// ```rust
45/// use regex::Regex;
46/// use valust_regex_utils::USERNAME;
47///
48/// let username_regex = Regex::new(USERNAME).unwrap();
49/// assert!(username_regex.is_match("hello-world"));
50/// assert!(!username_regex.is_match("hi"));
51/// ```
52pub const USERNAME: &str = r"^[a-zA-Z0-9_-]{3,}$";
53
54/// Regex for matching a valid hex color (`#aabbcc`/`#abc`).
55///
56/// ## Example
57///
58/// ```rust
59/// use regex::Regex;
60/// use valust_regex_utils::HEX_COLOR;
61///
62/// let color_regex = Regex::new(HEX_COLOR).unwrap();
63/// assert!(color_regex.is_match("#00ff00"));
64/// assert!(color_regex.is_match("#123"));
65/// assert!(color_regex.is_match("#223344ff"));
66/// ```
67pub const HEX_COLOR: &str =
68    r"^#?([a-fA-F0-9]{8}|[a-fA-F0-9]{6}|[a-fA-F0-9]{4}|[a-fA-F0-9]{3})$";