[英]Regex validation for a specific value with React Formik
首先,我想验证该字段,如果用户键入此字段中不存在的字符(例如): /[ùûüÿ€'“”«»–àâæçéèêëïîôœ]/
触发错误消息。
其次,我想将 3 个变量与正则表达式验证连接起来。
这是代码:
const validChars1 = /[A-Za-z0-9`~!@#$%^&*()+={};:’”,./<>?| \\\\\ [\]]*$/;
const validChars2 = /[ùûüÿ€’“”«»–àâæçéèêëïîôœ]/;
const validChars3 = /[áéíóúüñ¿]/;
const mainValidator = validChars1 + validChars2 + validChars3;
const validationSchema = yup.object({
primaryInformation: yup.object({
externalEmployeeId: yup
.string()
.matches(mainValidator, "Please enter valid name")
.required(intl.get("userManagement.editor.requiredFieldError"))
//Error: Operator '+' cannot be applied to types 'RegExp' and 'RegExp'
请帮我解决这个问题,谢谢!
虽然你不能像这样用普通的 JavaScript 编写正则表达式,你可以这样做
const validChars1 = /[A-Za-z0-9`~!@#$%^&*()+={};:’”,./<>?| \\\\\ [\]]*$/;
const validChars2 = /[ùûüÿ€’“”«»–àâæçéèêëïîôœ]/;
const validChars3 = /[áéíóúüñ¿]/;
const mainValidator = new RegExp(
validChars1.source
+ validChars2.source
+ validChars3.source
);
// etc...
不过,您的正则表达式还有另一个问题:第一个以与输入末尾匹配的$
断言结尾。 /a$b/
形式的 RegExp 永远不会成功,因为$b
是矛盾的。 "a"
和"ab"
都不能满足它。 对于"a"
, $
会成功,但b
会失败,反之对于"ab"
。
如果您想在不诉诸源字符串操作的情况下编写 RegExp,您可以查看compose-regexp ,它可以让您编写如下代码:
import {sequence} from 'compose-regexp'
const validChars1 = /[A-Za-z0-9`~!@#$%^&*()+={};:’”,./<>?| \\\\\ [\]]*/;
const validChars2 = /[ùûüÿ€’“”«»–àâæçéèêëïîôœ]/;
const validChars3 = /[áéíóúüñ¿]/;
const mainValidator = sequence(validChars1, validChars2, validChars3);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.