正则表达式和 yup:允许某个特殊字符,但不能重复



我有一个带有正则表达式的yup验证器,它允许以下所有字符:

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

唯一允许的特殊字符是"&";,单引号。但我也需要验证用户是否键入重复次数这个字符,如果是,我需要阻止表单。

在这种情况下,形式允许:Vinicius Sant‘anna

但是如果用户键入以下内容:";Vinicius Sant;,我需要阻止。如何改进我的正则表达式来验证这种情况?

您可以使用

/^'?p{L}+(?:[' ]p{L}+)*'?$/u

Detais

  • ^-字符串的开头
  • '?-可选的前导'
  • p{L}+-一个或多个Unicode字母
  • (?:[' ]p{L}+)*-'或空格出现零次或多次,然后出现一个或多个字母
  • '?-可选的'字符
  • $-字符串末尾
  • u-在正则表达式中启用Unicode属性类

如果您还需要支持二主动脉,请使用

/^'?(?:p{L}p{M}*)+(?:['s](?:p{L}p{M}*)+)*'?$/u

其中CCD_ 11匹配字母的一个或多个出现。s匹配空白。

相关内容

  • 没有找到相关文章