async_graphql/validators/
regex.rs

1use regex::Regex;
2
3use crate::{InputType, InputValueError};
4
5pub fn regex<T: AsRef<str> + InputType>(
6    value: &T,
7    regex: &'static str,
8) -> Result<(), InputValueError<T>> {
9    if let Ok(true) = Regex::new(regex).map(|re| re.is_match(value.as_ref())) {
10        Ok(())
11    } else {
12        Err(format_args!("value doesn't match expected format '{}'", regex).into())
13    }
14}
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19
20    #[test]
21    fn test_url() {
22        assert!(regex(&"123".to_string(), "^[0-9]+$").is_ok());
23        assert!(regex(&"12a3".to_string(), "^[0-9]+$").is_err());
24    }
25}