How to check whether a user string contains any forbidden words from a list in Rust

2 Answers

0 votes
fn contains_forbidden(text: &str, forbidden: &[&str]) -> bool {
    let lower = text.to_lowercase();
    
    forbidden.iter().any(|w| lower.contains(w))
}

fn main() {
    let text = "This text contains a badword inside";
    let forbidden = ["badword", "evil", "kill", "nasty", "terrible"];

    if contains_forbidden(text, &forbidden) {
        println!("Forbidden word detected");
    } else {
        println!("No forbidden words found");
    }
}



/*
run:

Forbidden word detected

*/

 



answered Dec 27, 2025 by avibootz
0 votes
use regex::Regex;
use std::collections::HashSet;

fn contains_forbidden(text: &str, forbidden: &[&str]) -> bool {
    let word_re = Regex::new(r"[a-z0-9]+").unwrap();

    // Extract words
    let words: HashSet<String> = word_re
        .find_iter(&text.to_lowercase())
        .map(|m| m.as_str().to_string())
        .collect();

    // Build forbidden set
    let forbidden_set: HashSet<&str> = forbidden.iter().copied().collect();

    // Check intersection
    words.iter().any(|w| forbidden_set.contains(w.as_str()))
}

fn main() {
    let text = "This text contains a badword inside";
    let forbidden = ["badword", "evil", "kill", "nasty", "terrible"];

    println!("{}", contains_forbidden(text, &forbidden));
}



/*
run:

true

*/

 



answered Dec 27, 2025 by avibootz

Related questions

...