我发现了应与IPv4地址匹配的正则表达式:
QRegExp rx_ipv4("^((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])$");
bool match = rx_ipv4.exactMatch("1.2.33333");
它返回true。
但是在上述正则表达式中,以点结尾的部分必须重复3次。这个正则表达式有什么问题?
答案 0 :(得分:0)
以上正则表达式在C ++代码中不正确。 C ++标准转义序列不包含: '\。'
C ++中正确的IPv4正则表达式为:
QRegExp rx_ipv4("^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\x2E){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$");
其中\ x2E是'。'的Ascii代码。