async_graphql/validators/
regex.rs1use 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}