Javascript 使用正则表达式进行名称验证
我在代码中使用正则表达式来验证名称并发送表单,我只需要使用它来获得一些帮助 名称应以大写字母开头,可以是2-3个单词,也可以用撇号、空格或破折号分隔,例如: 维克多·雨果 珍妮·德阿尔克 让-马克·艾罗 我试着用大写字母开头,用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]+)?)*\
/^[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
?
-启动另一个非分组模式,并开始使用空格或连字符进行匹配(?:[-]
-进一步匹配与regex开头相同的结构,并且零次或多次匹配[A-Z][A-Z]*(?:'[A-Z]+)?)*
-看到单词边界后停止\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谢谢你说,先生,我没有预料到,不,我不想要。问题是我不懂正则表达式,我只是想知道发生了什么