我想用java regex否定一组单词。
说,我想否定cvs
,svn
,nvs
,mvc
。我写了一个正则表达式^[(svn|cvs|nvs|mvc)]
。
有些看起来似乎没有起作用。
答案 0 :(得分:43)
试试这个:
^(?!.*(svn|cvs|nvs|mvc)).*$
如果它不包含svn,cvs,nvs或mvc中的一个,则匹配文本。
这是一个类似的问题:C# Regex to match a string that doesn't contain a certain string?
答案 1 :(得分:3)
这不是那么简单。如果你想否定一个单词,你必须将它分成字母并否定每个字母。
所以否定
/svn/
你必须写
/[^s][^v][^n]/
所以你要过滤掉的东西会变成真正丑陋的正则表达式,我认为最好使用这个正则表达式
/svn|cvs|nvs|mvc/
当你对它测试你的字符串时,只是否定结果。
在JS中,这看起来更像是:
!/svn|cvs|nvs|mvc/.test("this is your test string");
答案 2 :(得分:2)
你的正则表达式错了。在方括号之间,您可以将字符设置为要求或忽略。如果您没有找到^(svn|cvs|nvs|mvc)$
,那就没事了。