ghpascon_rust/utils/
regex.rs1use regex::Regex;
2
3pub fn regex_hex(value: &str, len: Option<usize>) -> bool {
4 let re = Regex::new(r"^[0-9a-fA-F]+$").unwrap();
6
7 if !re.is_match(value) {
9 return false;
10 }
11
12 if let Some(expected_len) = len {
14 return value.len() == expected_len;
15 }
16
17 return true;
18}
19
20#[cfg(test)]
21mod tests {
22 use super::*;
23
24 #[test]
25 fn test_regex_ok() {
26 assert!(regex_hex("1a2b3c", None));
27 assert!(regex_hex("1A2B3C", None));
28 assert!(regex_hex("1a2b3c", Some(6)));
29 }
30
31 #[test]
32 fn test_non_hex() {
33 assert!(!regex_hex("1a2b3g", None));
34 assert!(!regex_hex("xyz", None));
35 assert!(!regex_hex("12345z", None));
36 }
37
38 #[test]
39 fn test_length() {
40 assert!(regex_hex("1a2b3c", Some(6)));
41 assert!(!regex_hex("1a2b3c", Some(5)));
42 assert!(!regex_hex("1a2b3c", Some(7)));
43 }
44}