Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用带有Yup的正则表达式仅验证扩展拉丁字母和至少2个单词的全名_Javascript_Reactjs_Regex_Formik_Yup - Fatal编程技术网

Javascript 使用带有Yup的正则表达式仅验证扩展拉丁字母和至少2个单词的全名

Javascript 使用带有Yup的正则表达式仅验证扩展拉丁字母和至少2个单词的全名,javascript,reactjs,regex,formik,yup,Javascript,Reactjs,Regex,Formik,Yup,我有一个Reactjs站点,在那里我使用Formik和Yup来验证注册流中的字段。因为我不想使用日语字符或任何特殊字符,只允许使用扩展的拉丁字母表(这样用户可以使用A-Z、A-Z,但也可以使用例如޻Û) 这很好,但我也希望用户输入至少2个名称。我知道你可以在Yup中进行链接,所以我猜另一个.matches()与其中的一些正则表达式或其他Yup规则匹配,但我似乎找不到我要找的东西 提前谢谢 当前正则表达式不起作用的原因: /(\w.+\s).+/gi 它和一个词匹配 后跟任意字符(1个或多个)

我有一个Reactjs站点,在那里我使用Formik和Yup来验证注册流中的字段。因为我不想使用日语字符或任何特殊字符,只允许使用扩展的拉丁字母表(这样用户可以使用A-Z、A-Z,但也可以使用例如޻Û)

这很好,但我也希望用户输入至少2个名称。我知道你可以在Yup中进行链接,所以我猜另一个.matches()与其中的一些正则表达式或其他Yup规则匹配,但我似乎找不到我要找的东西


提前谢谢 当前正则表达式不起作用的原因:

/(\w.+\s).+/gi
  • 它和一个词匹配
  • 后跟任意字符(1个或多个)
  • 后跟空白字符
  • 后跟任意字符(1个或多个)
由于输入
äö
不包含有效的单词字符(根据regex),因此由于第一条规则,它已经失败了

ääöJonsson
不匹配,因为它也不符合第一条和第二条规则

ääölam Jonsson
确实通过了正则表达式,但它只在以下短语上匹配:
lam Jonsson

因为您只对检测是否有任何日语字符感兴趣,所以更改正则表达式以不同方式验证输入。此正则表达式将测试输入,如果字符串中存在错误,则将失败(


查看正在运行的正则表达式。

当前正则表达式不工作的原因:

/(\w.+\s).+/gi
  • 它和一个词匹配
  • 后跟任意字符(1个或多个)
  • 后跟空白字符
  • 后跟任意字符(1个或多个)
由于输入
äö
不包含有效的单词字符(根据regex),因此由于第一条规则,它已经失败了

ääöJonsson
不匹配,因为它也不符合第一条和第二条规则

ääölam Jonsson
确实通过了正则表达式,但它只在以下短语上匹配:
lam Jonsson

由于您只对检测是否有任何日语字符感兴趣,请更改正则表达式以不同方式验证输入。此正则表达式将测试输入,如果字符串中有,则将失败(


查看正在运行的正则表达式。

因为您已经匹配了非拉丁字母,所以第二次验证只需要使用非空格标记
\S
而不是单词标记
\w

.matches(
        /^([A-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s]*)$/gi,
            'Name can only contain Latin letters.'
        )
.matches(/^\s*[\S]+(\s[\S]+)+\s*$/gms,'Please enter your full name.')

因为您已经匹配了非拉丁字母,所以第二次验证只需要使用非空格标记
\S
而不是单词标记
\w

.matches(
        /^([A-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s]*)$/gi,
            'Name can only contain Latin letters.'
        )
.matches(/^\s*[\S]+(\s[\S]+)+\s*$/gms,'Please enter your full name.')

您好,谢谢!很抱歉,我还想确保用户不能添加任何特殊字符或数字。我使用的第一个字符或数字:/^([A-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s]*)如果我删除了我的另一个正则表达式,$/gi实际上是有效的,所以我现在需要知道的是如何确保用户也输入至少两个名称。好的,我被说“password”的验证消息弄糊涂了。在这种情况下,您可以按照@Phan Nhat Huy的回答进行操作。是的,我明白了,这是一个键入错误,对此表示抱歉!感谢所有帮助!嗨,谢谢!对不起,我还想确保用户不能添加任何特殊字符或数字。我使用的第一个:/^([a-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s]*)如果我删除了我的另一个正则表达式,$/gi实际上是有效的,所以我现在需要知道的是如何确保用户也输入至少两个名称。好的,我被说“password”的验证消息弄糊涂了.在这种情况下,你可以按照@Phan Nhat Huy的回答来做。是的,我明白了,这是一个打字错误,很抱歉!谢谢你的帮助!嗨,Phan!事实上,这与我想要的有点相反。第一个。matches()如果我删除第二个名称,效果会很好,但是因为我希望在该字段中输入全名,所以我希望用户至少键入两个名称。您知道如何做到这一点吗?因此,我现在只使用:。匹配(/^([a-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s]*)$/gi,'name只能包含拉丁字母。'))我现在还编辑了原始问题,使其更符合最新情况。提前感谢!/Joel@Joel8bitar好的,我已经更新并改进了我的答案。请看一看。太棒了!这确实有效!谢谢!我也使用了这个解决方案,它也有效,但我不知道哪一个更好,也不知道为什么(/^([A-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s]$/g,“名称只能包含拉丁字母。”)。匹配(/^(([A-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s]*)(?:([A-Za-z-z\u00C0-\u00D8-\u00f6\u00D6-\u00D6-\u00f8])请输入您的全名。)。请用我的名字试试我的名字(例如:Alan Olav Walker)。或者在名字前后添加一些空格(例如:James Bond)。另一种方法看起来更长,但由于不必要的单词过滤器(之前已经做过),它的功能更少。嗨,潘!实际上它与我想要的有点相反。第一个。matches()如果我删除第二个名称,效果会很好,但是因为我希望在该字段中输入全名,所以我希望用户至少键入两个名称。您知道如何做到这一点吗?因此,我现在只使用:。匹配(/^([a-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s]*)$/gi,'name只能包含拉丁字母。'))我现在还编辑了原始问题,使其更符合最新情况。提前感谢!/Joel@Joel8bitar好的,我已经更新并改进了我的答案。请看一看。太棒了!这确实有效!谢谢!我也使用了这个解决方案,它也有效,但我不知道哪一个更好,也不知道为什么(/^([A-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s]*$/g,“名称只能包含拉丁字母。”)。匹配(/^(?:([A-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s]*))
/^[^\u4E00-\u9FBF\u3040-\u309f\u30A0-\u30FF]+$/
.matches(
        /^([A-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff\s]*)$/gi,
            'Name can only contain Latin letters.'
        )
.matches(/^\s*[\S]+(\s[\S]+)+\s*$/gms,'Please enter your full name.')