任何人都可以建议我如何在QT中验证由点(。)分隔的字符串,基本上就像java中的包名一样,
我的代码就像这样
QRegExp rx("^[\\w]+[^\\.{0,1}\\w+$]*$");
rx.setCaseSensitivity(Qt::CaseInsensitive);
return rx.exactMatch(package);
但是我的结果出错了
例如:
com.me.test // valid
com.me.he. // invalid
.com.me.he // invalid
com..me.me // invalid
答案 0 :(得分:8)
这是因为你错误地使用了一个字符类。方括号之间的字符是字符类,所以
[^\\.{0,1}\\w+$]*
是一个否定的字符类,因为它以^
开头。此类将匹配任何不属于这些字符的字符:“。{},01 + $”或不在\w
中。
你想要的听起来更像是
^\\w+(\\.\\w+)*$
顺便说一下,你不需要CaseInsensitive
选项,因为你的正则表达式中没有明确写的字母。