diff --git a/components/utils/src/anchors.rs b/components/utils/src/anchors.rs index 06af56b4..fe86e960 100644 --- a/components/utils/src/anchors.rs +++ b/components/utils/src/anchors.rs @@ -1,4 +1,5 @@ use libs::regex::Regex; +use libs::regex::escape; pub fn has_anchor_id(content: &str, anchor: &str) -> bool { let checks = anchor_id_checks(anchor); @@ -6,7 +7,8 @@ pub fn has_anchor_id(content: &str, anchor: &str) -> bool { } fn anchor_id_checks(anchor: &str) -> Regex { - Regex::new(&format!(r#"\s(?i)(id|name) *= *("|')*{}("|'| |>)+"#, anchor)).unwrap() + Regex::new(&format!(r#"\s(?i)(id|name) *= *("|')*{}("|'| |>)+"#, + escape(anchor))).unwrap() } #[cfg(test)] @@ -44,7 +46,11 @@ mod tests { assert!(m(r#""#)); + // Escaped Anchors + assert!(check("fred?george", r#""#)); + assert!(check("fred.george", r#""#)); + // Non matchers - assert!(!m(r#""#)) + assert!(!m(r#""#)); } }