正则表达式和是的:允许某个特殊字符,但不能重复
Regex and yup: Allow a certain special character, but it can't be repeated
我有一个带有正则表达式的 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''''''anna”,我需要阻止。我怎样才能改进我的正则表达式来验证这种情况?
您可以使用
/^'?\p{L}+(?:[' ]\p{L}+)*'?$/u
详情:
^
- 字符串开头
'?
- 一个可选的前导 '
\p{L}+
- 一个或多个 Unicode 字母
(?:[' ]\p{L}+)*
- '
或 space 出现零次或多次,然后出现一个或多个字母
'?
- 一个可选的 '
字符
$
- 字符串结尾
u
- 在正则表达式中启用 Unicode 属性 类。
如果您还需要支持变音符号,请使用
/^'?(?:\p{L}\p{M}*)+(?:['\s](?:\p{L}\p{M}*)+)*'?$/u
其中 (?:\p{L}\p{M}*)+
匹配一个或多个字母,然后匹配零个或多个变音符号。 \s
匹配白色space.
我有一个带有正则表达式的 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''''''anna”,我需要阻止。我怎样才能改进我的正则表达式来验证这种情况?
您可以使用
/^'?\p{L}+(?:[' ]\p{L}+)*'?$/u
详情:
^
- 字符串开头'?
- 一个可选的前导'
\p{L}+
- 一个或多个 Unicode 字母(?:[' ]\p{L}+)*
-'
或 space 出现零次或多次,然后出现一个或多个字母'?
- 一个可选的'
字符$
- 字符串结尾u
- 在正则表达式中启用 Unicode 属性 类。
如果您还需要支持变音符号,请使用
/^'?(?:\p{L}\p{M}*)+(?:['\s](?:\p{L}\p{M}*)+)*'?$/u
其中 (?:\p{L}\p{M}*)+
匹配一个或多个字母,然后匹配零个或多个变音符号。 \s
匹配白色space.