我正在解析一个提要,需要排除包含单词"bad"的字符串的字段,在任何情况下的组合。
例如"bad"或"bad id"或"user has bad id"将不能通过正则表达式测试,
但是 "xxx Badlands ddd"或"aaabad" 会通过
对于javascript,您可以将单词放入正则表达式中,并对边界进行匹配b
标准,这意味着没有字符连接:
/bbadb/i.test("Badkamer") // i for case-insensitive
你可以试试这个regex:
^(.*?(bbadb)[^$]*)$
REGEX演示
我认为最简单的方法是将字符串分成单词,然后检查每个单词是否匹配,它可以用这样的函数来完成:
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#编写的。您没有指定语言