/**
* 判断是否合法车牌号
* @name isCarLicense
* @param license 车牌号
* @return bool
*/
bool CarLicense::isCarLicense(QString license)
{
//参数判断
if (license.isEmpty())
{
return false;
}
int pos = 0;
//匹配民用车牌和使馆车牌
//判断标准
//1.第一位为汉子省份缩写
//2.第二位为大写字母城市编码
//3.后面是5位仅含字母和数字的组合
QString regular(QStringLiteral("^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新使]{1}[A-Z]{1}[0-9a-zA-Z]{5}$"));
QRegExp rx(regular);
QRegExpValidator v(rx, 0);
QValidator::State err=v.validate(license, pos);
if (err ==QValidator::Acceptable)
{
return true;
}
//匹配特种车牌(挂,警,学,领,港,澳)
rx.setPattern(QStringLiteral("^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{4}[挂警学领港澳]{1}$"));
QRegExpValidator v1(rx, 0);
err = v1.validate(license, pos);
if(err == QValidator::Acceptable)
{
return true;
}
//匹配武警车牌
rx.setPattern(QStringLiteral("^WJ[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]?[0-9a-zA-Z]{5}$"));
QRegExpValidator v2(rx, 0);
err = v2.validate(license, pos);
if (err == QValidator::Acceptable)
{
return true;
}
//匹配军牌
rx.setPattern("^[A-Z]{2}[0-9]{5}$");
QRegExpValidator v3(rx, 0);
err = v3.validate(license, pos);
if (err == QValidator::Acceptable)
{
return true;
}
//匹配新能源车辆6位车牌
//小型新能源车
rx.setPattern(QStringLiteral("^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[DF]{1}[0-9a-zA-Z]{5}$"));
QRegExpValidator v4(rx, 0);
err = v4.validate(license, pos);
if (err == QValidator::Acceptable)
{
return true;
}
//大型新能源车
rx.setPattern(QStringLiteral("^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{5}[DF]{1}$"));
QRegExpValidator v5(rx, 0);
err = v5.validate(license, pos);
if (err == QValidator::Acceptable)
{
return true;
}
return false;
}
钛合金大叔的态度。
1900

被折叠的 条评论
为什么被折叠?



