验证QT中用点(.)分隔的字符串

Sha*_*adi 4 regex qt qt4

任何人都可以建议我如何在QT中验证由点(.)分隔的字符串,基本上就像java中的包名一样,

我的代码是这样的

QRegExp rx("^[\\w]+[^\\.{0,1}\\w+$]*$");
rx.setCaseSensitivity(Qt::CaseInsensitive);
return rx.exactMatch(package);
Run Code Online (Sandbox Code Playgroud)

但我得到了错误的结果

例如:

 com.me.test // valid
 com.me.he. // invalid
 .com.me.he // invalid
 com..me.me // invalid
Run Code Online (Sandbox Code Playgroud)

ste*_*ema 8

那是因为你错误地使用了一个角色类.方括号之间的字符是字符类,所以

 [^\\.{0,1}\\w+$]*
Run Code Online (Sandbox Code Playgroud)

是一个否定的字符类,因为它以a开头^.此类将匹配任何不属于这些字符的字符:".{},01 + $"或不存在的字符\w.

你想要的听起来更像

^\\w+(\\.\\w+)*$
Run Code Online (Sandbox Code Playgroud)

在Regexr上看到它

顺便说一下,你不需要这个CaseInsensitive选项,因为你的正则表达式中没有明确写的字母.