1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use regex::Regex;
lazy_static! {
static ref PATTERN: Regex = Regex::new(r"^[1|5|7][0-9]{6}\(?[0-9A-Z]\)?$").unwrap();
static ref REMOVAL_PATTERN: Regex = Regex::new(r"[\(|\)]").unwrap();
}
pub fn validate(number: &str) -> bool {
let number = REMOVAL_PATTERN
.replace_all(number, "")
.trim()
.to_ascii_uppercase();
if number.len() == 8 && PATTERN.is_match(&number) {
true
} else {
false
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn validate_mo() {
assert_eq!(validate("1123456(A)"), true);
assert_eq!(validate("7431243(3)"), true);
assert_eq!(validate("5631279(0)"), true);
assert_eq!(validate("2000148(3)"), false);
assert_eq!(validate("5215299A"), true);
}
}