1use fancy_regex::Regex;
2use itertools::Itertools;
3
4pub fn compile_into_regex<Item, Iter>(regex_str: Iter) -> Regex
5where
6 Item: AsRef<str>,
7 Iter: IntoIterator<Item = Item>,
8{
9 Regex::new(
10 regex_str
11 .into_iter()
12 .map(|s| format!(r"(?:{})", s.as_ref()))
13 .join("|")
14 .as_str(),
15 )
16 .unwrap()
17}
18
19#[cfg(test)]
20mod tests {
21 use super::*;
22
23 #[test]
24 fn test_name() {
25 let r = compile_into_regex([r"\d+", r"[a-zA-Z]+"]);
26 assert!(r.is_match("123").unwrap());
27 assert!(r.is_match("abc").unwrap());
28 assert!(r.is_match("ABC").unwrap());
29
30 assert!(!r.is_match("@").unwrap());
31 assert!(!r.is_match("#").unwrap());
32 }
33}