如何改进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
相关产品推荐
相关产品推荐

