Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.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 使用正则表达式进行名称验证_Javascript_Html_Regex - Fatal编程技术网

Javascript 使用正则表达式进行名称验证

Javascript 使用正则表达式进行名称验证,javascript,html,regex,Javascript,Html,Regex,我在代码中使用正则表达式来验证名称并发送表单,我只需要使用它来获得一些帮助 名称应以大写字母开头,可以是2-3个单词,也可以用撇号、空格或破折号分隔,例如: 维克多·雨果 珍妮·德阿尔克 让-马克·艾罗 我试着用大写字母开头,用/^[a-z][a-z]/ 但我不知道如何继续验证空格、破折号和撇号 /^[A-z][A-z]/ 我不知道如何继续,谢谢你的帮助。你可以使用这个正则表达式 \b[A-Z][a-z]*(?:'[a-z]+)?(?:[ -][A-Z][a-z]*(?:'[a-z]+)?)*\

我在代码中使用正则表达式来验证名称并发送表单,我只需要使用它来获得一些帮助

名称应以大写字母开头,可以是2-3个单词,也可以用撇号、空格或破折号分隔,例如:

维克多·雨果

珍妮·德阿尔克

让-马克·艾罗

我试着用大写字母开头,用
/^[a-z][a-z]/
但我不知道如何继续验证空格、破折号和撇号

/^[A-z][A-z]/


我不知道如何继续,谢谢你的帮助。

你可以使用这个正则表达式

\b[A-Z][a-z]*(?:'[a-z]+)?(?:[ -][A-Z][a-z]*(?:'[a-z]+)?)*\b
说明:

  • \b[A-Z][A-Z]*
    -开始匹配单词边界和大写字母,后跟零个或多个小写字母
  • (?:'[a-z]+)?
    -可选后跟
    和一些小写字母。如果您想重复多次,请将
    更改为
    *
    如果您真的想支持
    D'arcd'arc
    之类的名称,我怀疑您是否需要,这就是为什么我将其保留在
  • (?:[-]
    -启动另一个非分组模式,并开始使用空格或连字符进行匹配
  • [A-Z][A-Z]*(?:'[A-Z]+)?)*
    -进一步匹配与regex开头相同的结构,并且零次或多次匹配
  • \b
    -看到单词边界后停止

您可以尝试以下代码:

我建议你为此玩玩,这很方便

我添加了一个isValidNameStrict,它只接受名称中有限数量的字符

根据需要修改[a-z']组以添加额外字符

函数isValidNameStrict(名称){
设regEx=/^([A-Z][A-Z']*[\-\s]?){2,}$/;
返回正则表达式测试(名称);
}
函数isValidName(名称){
设regEx=/^(?[A-Z][^\s]*\s?{2}$/;
返回正则表达式测试(名称);
}
函数testName(name){
log(“${name}”是${isValidNameStrict(name)?“valid”:“not valid”}`);
}
testName(“维克多·雨果”);
testName(“Jeanne D'arc”);
测试名称(“Jean-Marc Ayrault”);
测试名称(“岩石”);
testName(“维克多·雨果”);
testName(“”);

testName(“Ozymandias”)效果很好,你能解释一下发生了什么吗?@RaffyEid:这将与Victor123 Hu@@@go
匹配,声称它是有效的。你真的想在名义上允许任何垃圾吗?我们可能比需要的更宽容了。。然而,很容易改变。您需要量化名称中的有效字符。我肯定会有更多的——尽管如此:)@PushpeshKumarRajwanshi谢谢你说,先生,我没有预料到,不,我不想要。问题是我不懂正则表达式,我只是想知道发生了什么