regex - 在 QT 中验证由点 (.) 分隔的字符串

标签 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

最佳答案

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

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

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

你想要的听起来更像
^\\w+(\\.\\w+)*$

看到它here on Regexr

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

关于regex - 在 QT 中验证由点 (.) 分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12948523/

相关文章:

javascript - 在正则表达式中,我需要仅在中间允许空格并在开头和结尾处防止空格

regex - sed 中的正则表达式

c++ - 线程是否共享一些类字段?

c++ - 水平布局尺寸

c++ - 如何使用 Qt 中的默认程序打开服务器上的文件?

qt - 如何在 QTableView 的给定索引处获取值

javascript - 如何使用 Regex 和 Javascript 获取字符串的第一个和最后一个字符

Java String.split() 分割每个字符而不是给定的正则表达式

c++ - 在 Visual Studio 2013 上使用 QT

c++ - Qt - 从布局中删除所有小部件?