如何在 Yup 中为单个字段配置多个正则表达式验证规则-js教程

yup 不支持连续调用多个 `.matches()` 实现“或”逻辑,但可通过 `.test()` 自定义验证函数,灵活匹配多种 google maps url 格式(如 `maps.app.goo.gl`、`www.google.com.*\/maps\/`、`goo.gl/maps/`),确保输入符合任一有效模式即可通过校验。

在 Yup 中,.matches() 方法是“与”逻辑——每个调用都会叠加一个独立的正则约束,要求字符串同时满足全部正则,这显然不适用于多选一的 URL 场景(例如既要接受 https://goo.gl/maps/xxx,也要接受 https://maps.app.goo.gl/yyy)。正确做法是使用 .test() 创建自定义验证器,将多个正则以逻辑或(||)组合在一个函数中判断。

以下是适配你列出的三种 Google Maps URL 格式的完整验证方案:

import * as Yup from 'yup';

const googleMapsUrlRegexes = [
  /^https:\/\/maps\.app\.goo\.gl\/[A-Za-z0-9_-]+$/,           // e.g. https://maps.app.goo.gl/abc123
  /^https:\/\/www\.google\.com\.[a-z]{2,3}\/maps\/.+$/,      // e.g. https://www.google.com.mx/maps/place/...
  /^https:\/\/goo\.gl\/maps\/[A-Za-z0-9_-]+$/                // e.g. https://goo.gl/maps/def456
];

const areaSchema = Yup.object().shape({
  // ...其他字段
  urlGoogleMaps: Yup.string()
    .test(
      'is-valid-google-maps-url',
      '请输入有效的 Google Maps 链接',
      (value) => {
        if (!value || typeof value !== 'string') return false;
        return googleMapsUrlRegexes.some(regex => regex.test(value.trim()));
      }
    )
    .required('Google Maps 链接为必填项')
});

✅ 关键优势:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 如何在 Yup 中为单个字段配置多个正则表达式验证规则-js教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3994699+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3994699+
  • 本周更新: 0+
  • 最后更新: 2026-03-16