有关C++正则表达式
#include <regex>#include <iostream>
#include <string>
bool IsIpV4Address(const std::string& strIp)
{
//验证IP地址的模式,这里"\."中的"\"是转义字符,表示这是一个.
const std::regex pattern("(\\d{1,3}){1}\.(\\d{1,3}){1}\.(\\d{1,3}){1}\.(\\d{1,3}){1}");
//匹配验证
return std::regex_match(strIp, pattern);
}
int main()
{
std::string strIp1 = "13.34.34.4";//192.168.1.1
std::string strIp2 = "192.168";
std::cout << strIp1 << " : " << (IsIpV4Address(strIp1) ? "valid" : "invalid") << std::endl;
std::cout << strIp2 << " : " << (IsIpV4Address(strIp2) ? "valid" : "invalid") << std::endl;
system("pause");
return 0;
}
"(\\d{1,3}){1}\.(\\d{1,3}){1}\.(\\d{1,3}){1}\.(\\d{1,3}){1}"
\\d是什么意思?
如果我只输入10.10为什么会匹配成功?不是最起码得有3个.吗? 我觉得这个问题应该是和正则表达式有关系,可能出了一些问题,我不太懂这个正则表达式。
下面的这个正则表达式是可以进行正确的处理的。可以试一下。具体关于正则的问题还是需要大神来回答。{:10_269:}
(|\\d|1\\d{2}|2\\d|25)(\\.(\\d|\\d|1\\d{2}|2\\d|25)){3} 匹配.应该是\\.吧
页:
[1]