任何人都可以建议我如何验证 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,1}\\w+$]*
是一个否定字符类,因为它以
^
开头.此类将匹配不是以下字符之一的任何字符:“.{},01+$”或不在 \w
中的字符.你想要的听起来更像
^\\w+(\\.\\w+)*$
看到它here on Regexr
顺便说一下,您不需要
CaseInsensitive
选项,因为您没有在正则表达式中明确写下字母。
关于regex - 在 QT 中验证由点 (.) 分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12948523/