正则表达式匹配字符串,其中字符串不带'username'

时间:2010-08-16 04:01:21

标签: regex

所以我正在尝试写一个正则表达式并让它匹配字符串ONLY如果字符串不是以字符串'username'开头

我尝试了类似^([^ username])的内容......但是匹配字符串不以任何字母开头的字符串。

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:6)

^(?!username)

使用negative lookahead

另一种选择,取决于你的行为,只是简单地颠倒你的逻辑。例如,如果你正在做

if foo matches <regex>

然后就这样做

if !(foo matches <regex>)

答案 1 :(得分:2)

如果您使用的是Perl:您可以使用否定绑定运算符:

if($text !~ /^username/) {
    # do something
}

答案 2 :(得分:1)

  

但匹配的字符串   string不以任何一个开头   字母。

这是因为方括号([])表示character class而插入符号(^)否定了字符类。

话虽如此,为什么 使用正则表达式?这可以通过简单的字符串匹配来完成,这通常比正则表达式更快。如果有匹配检查并查看该位置是否不是字符串的开头。您没有指定语言,但大多数都支持这种语言。