正则表达式如果单词“bad”不在字符串中,则为true

时间:2014-08-22 17:58:38

标签: regex

我正在解析一个Feed,需要在大小写的任意组合中排除由带有“bad”字样的字符串组成的字段。

例如“bad”或“Bad id”或“user has bAd id”不会传递正则表达式测试,

“xxx Badlands ddd”或“aaabad”将通过

4 个答案:

答案 0 :(得分:1)

排除符合/\bbad\b/i

的任何内容

\b匹配字边界,i修饰符使其不区分大小写。

答案 1 :(得分:0)

对于javascript,你可以把你的单词放在正则表达式中并且匹配\b代表边界,这意味着没有连接字符:

/\bbad\b/i.test("Badkamer") // i for case-insensitive

答案 2 :(得分:0)

你可以试试这个正则表达式:

^(.*?(\bbad\b)[^$]*)$

REGEX DEMO

答案 3 :(得分:0)

我认为最简单的方法是将字符串拆分为单词,然后检查每个单词是否匹配,可以使用如下函数完成:

    private bool containsWord(string searchstring, string matchstring)
    {
        bool hasWord = false;

        string[] words = searchstring.split(new Char[] { ' ' });
        foreach (string word in words)
        {
            if (word.ToLower() == matchstring.ToLower())
                hasWord = true;
        }
        return hasWord;
    }

代码将所有内容转换为小写,以忽略任何不匹配的情况。我想你也可以使用RegEx:

static bool ExactMatch(string input, string match)

{
    return Regex.IsMatch(input.ToLower(), string.Format(@"\b{0}\b", Regex.Escape(match.ToLower())));
}
根据我的理解,

\ b是一个单词边界字符。 这些例子在C#中。您没有指定语言