我有一个带有正则表达式的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
匹配空白。