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

如何改进Yup正则验证规则,允许单个单引号输入但禁止重复单引号?

解决重复单引号的Yup验证问题

嘿,这个需求很好实现,只需要给你现有的正则表达式加一个负向前瞻断言,就能阻止连续重复的单引号输入,同时保留原来允许的所有字符。

核心修改思路

我们要确保字符串中不存在连续的两个单引号,所以在原正则的开头添加(?!.*'')这个负向前瞻——它会扫描整个字符串,只要发现有''这种连续单引号的情况,就会让正则匹配失败,直接触发验证错误。

修改后的完整Yup代码

Yup.string()
  .required(MESSAGES.requiredField)
  .min(min, MESSAGES.minCharacters(min))
  .matches(
    /^(?!.*'')[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ']+$/u,
    'Insert only normal characters and avoid repeated single quotes'
  )

验证效果测试

  • ✅ 允许:Vinicius Sant'anna(单个单引号,符合要求)
  • ✅ 允许:'Maria's Bakery'(多个单引号但不连续)
  • ❌ 阻止:Vinicius Sant''''''anna(连续重复的单引号)
  • ❌ 阻止:''Invalid Input''(开头/结尾出现连续单引号)

这个修改完全保留了你原来的字符允许范围,只是新增了阻止连续单引号的逻辑,非常贴合你的需求~

内容的提问来源于stack exchange,提问作者Vinícius Cardoso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:32:47