You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MERN栈应用如何实现后端对前端输入车辆牌照的验证与分类

后端实现步骤

第一步:编写车牌验证分类函数

先根据你给出的三类牌照格式编写正则规则,封装为独立的验证函数,方便后续调整复用:

// 车牌验证分类函数
function validateAndClassifyPlate(plateNo) {
  // 预处理输入:去除首尾空格,合并连续空格为单个,兼容用户输入失误
  const plate = plateNo.trim().replace(/\s+/g, ' ');
  // 三类牌照对应正则规则
  const vintageRegex = /^\d{2} ශ්‍රී \d{4}$/; // 复古款:两位数字+ශ්‍රී+四位数字
  const oldRegex = /^\d{2,3}-\d{4}$/; // 旧款:2-3位数字+横杠+四位数字
  const newRegex = /^([A-Z]{2} [A-Z]{2}|[A-Z]{3})-\d{4}$/i; // 新款:两种格式,加i兼容大小写输入

  if (vintageRegex.test(plate)) {
    return { valid: true, type: '复古款' };
  } else if (oldRegex.test(plate)) {
    return { valid: true, type: '旧款' };
  } else if (newRegex.test(plate)) {
    return { valid: true, type: '新款' };
  } else {
    return { valid: false, error: '车牌格式不符合要求,请检查后重新输入' };
  }
}

第二步:修改接口路由加入验证逻辑

在数据写入数据库前调用验证函数,验证不通过直接返回错误,验证通过后把分类结果存入数据库,同时返回给前端:

// new registration
router.post("/registrations/new",(req, res)=>{
    const { plateNo } = req.body;
    // 非空校验
    if (!plateNo) {
      return res.status(400).json({
        error: '车牌号码不能为空'
      })
    }
    // 执行验证分类
    const plateCheckResult = validateAndClassifyPlate(plateNo);
    if (!plateCheckResult.valid) {
      return res.status(400).json({
        error: plateCheckResult.error
      })
    }
    // 验证通过,把车牌分类结果加入存储数据
    // 注意提前在你的Registrations模型中新增plateType字段
    let newRegistration = new Registrations({
      ...req.body,
      plateType: plateCheckResult.type
    });
    newRegistration.save((err)=>{
        if(err){
            return res.status(400).json({
                error:err
            })
        }
        return res.status(200).json({
            success:"registration Ok",
            plateType: plateCheckResult.type // 把分类结果返回给前端使用
        });
    });
});

可选优化

你可以在前端输入框的onChange逻辑里加上相同的规则校验,提前给用户格式提示,减少无效后端请求,提升使用体验。

内容的提问来源于stack exchange,提问作者Code With Banchi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:18:02