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

时间:2012-10-18 06:36:04

标签: regex qt qt4

任何人都可以建议我如何在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

1 个答案:

答案 0 :(得分:8)

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

 [^\\.{0,1}\\w+$]*

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

你想要的听起来更像是

^\\w+(\\.\\w+)*$

here on Regexr

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