任何人都可以建议我如何在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)
那是因为你错误地使用了一个角色类.方括号之间的字符是字符类,所以
[^\\.{0,1}\\w+$]*
Run Code Online (Sandbox Code Playgroud)
是一个否定的字符类,因为它以a开头^
.此类将匹配任何不属于这些字符的字符:".{},01 + $"或不存在的字符\w
.
你想要的听起来更像
^\\w+(\\.\\w+)*$
Run Code Online (Sandbox Code Playgroud)
在Regexr上看到它
顺便说一下,你不需要这个CaseInsensitive
选项,因为你的正则表达式中没有明确写的字母.
归档时间: |
|
查看次数: |
4572 次 |
最近记录: |