4

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

1 回答 1

8

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

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

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

你想要的听起来更像

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

在 Regexr 上查看

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

于 2012-10-18T07:37:35.143 回答