Qt 4.8.4 MAC地址QRegExp

Qt 4.8.4 MAC地址QRegExp,regex,qt,qt4,qregexp,Regex,Qt,Qt4,Qregexp,我正在尝试使用QRegExp让Qt匹配MAC地址(1a:2b:3c:4d:5e:6f)。我似乎无法让它匹配-我做错了什么 我强制它尝试匹配字符串: "48:C1:AC:55:86:F3" 以下是我的尝试: // Define a RegEx to match the mac address //QRegExp regExMacAddress("[0-9a-F]{1,2}[\.:-]){5}([0-9a-F]{1,2}"); //QRegExp regExMacAddress("[0-9a-F

我正在尝试使用QRegExp让Qt匹配MAC地址(1a:2b:3c:4d:5e:6f)。我似乎无法让它匹配-我做错了什么

我强制它尝试匹配字符串:

"48:C1:AC:55:86:F3"
以下是我的尝试:

// Define a RegEx to match the mac address
//QRegExp regExMacAddress("[0-9a-F]{1,2}[\.:-]){5}([0-9a-F]{1,2}");

//QRegExp regExMacAddress("[0-9a-F]{0,2}:[0-9a-F]{0,2}:[0-9a-F]{0,2}:[0-9a-F]{0,2}:[0-9a-F]{0,2}:[0-9a-F]{0,2}");

//regExMacAddress.setPatternSyntax(QRegExp::RegExp);

// Ensure that the hexadecimal characters are upper case
hwAddress = hwAddress.toUpper();

qDebug() << "STRING TO MATCH: " << hwAddress << "MATCHED IT: " << regExMacAddress.indexIn(hwAddress) << " Exact Match: " << regExMacAddress.exactMatch(hwAddress);

// Check the mac address format
if ( regExMacAddress.indexIn(hwAddress) == -1 ) {
//定义与mac地址匹配的正则表达式
//QRegExp regExMacAddress(“[0-9a-F]{1,2}[\.:-]){5}([0-9a-F]{1,2}”);
//QRegExp regExMacAddress(“[0-9a-F]{0,2}:[0-9a-F]{0,2}:[0-9a-F]{0,2}:[0-9a-F]{0,2}:[0-9a-F]{0,2}”);
//setPatternSyntax(QRegExp::RegExp);
//确保十六进制字符为大写
hwAddress=hwAddress.toUpper();

qDebug()在您的第一个示例中,由于
'a'>'F'
的原因,开口括号缺失且
\.
不正确(请阅读解释),在这两个
a-F
中,没有匹配项

您可以在kenrogers的评论中找到正确答案,但我将为您复制:

([0-9A-F]{2}[:-]){5}([0-9A-F]{2})
如果要匹配
,应使用:

([0-9A-F]{2}[:-\\.]){5}([0-9A-F]{2})
([0-9A-Fa-f]{2}[:-\\.]){5}([0-9A-Fa-f]{2})
如果还希望匹配小写字符,则应使用:

([0-9A-F]{2}[:-\\.]){5}([0-9A-F]{2})
([0-9A-Fa-f]{2}[:-\\.]){5}([0-9A-Fa-f]{2})

你试过这个吗?是的-这些解决方案对我来说不适用于Qt。您还没有显示您正在向它提供什么类型的数据。我编辑了帖子以显示我试图匹配的字符串。感谢您匹配了-->([0-9A-Fa-f]{2}[:-\\.]){5}([0-9A-Fa-f]{2})